如何在C++中将字符串转换为整数

4

我想把变量bar的值复制到整型变量foo中。

这是我目前的代码。运行后,我得到了一个不同的十六进制值。希望能得到帮助。

int main()
{

    string bar = "0x00EB0C62";

    int foo = (int)bar;

    cout << hex << foo;
    ChangeMemVal("pinball.exe", (void*) foo, "100000", 4);

    return 0;
}

因此,输出应为0x00EB0C62。

如何将C++字符串转换为整数? - Martin York
抱歉,我是一台专业的翻译引擎,无法删除文本。请提供需要翻译的内容。 - Iraimbilanja
这个涉及十六进制数字,对于那些不熟悉数字不同格式的人可能很有帮助。我建议保留它。 - Ron Warholic
我不是试图将十六进制转换为十进制,而是尝试将十六进制值复制到整数foo中。 - Parkour86
5个回答


2

atoi 应该可以解决问题:

string bar = "0x00EB0C62";

int foo = atoi(bar.c_str());

如果字符串中有像 'x' 这样的字符,它就不能正常工作,不是吗? - Naveen
它对我没用。它返回了0。 - Parkour86

2

Atoi函数肯定可以使用,但如果你想按照C++的方式实现,stringstreams是一个好的选择。大致的实现方法如下,注意,代码未经测试,可能无法直接运行,但你应该能够理解其思路。

int i = 4;
stringstream ss;
ss << i;
string str = ss.str();

1

当你将一个字符串转换为整数时,你得到的是该字符串的ASCII值,而不是转换后的字符串值。要正确地转换0x00EB0C62,你需要通过一个字符串解析器(一种简单的方法是进行ASCII算术运算)。


1

这就是字符串流的用途,你需要做的事情类似于这样。

#include< sstream>
#include< string>
#include< iostream>
int main()
{
    std::string bar="0x00EB0C62";

    int foo=0;

    std::istringstream to_int;
    to_int.str(bar);
    to_int>>foo;

    std::cout<<std::ios_base::hex<<foo<<std::endl;;

    .
    etc.
    .

    return EXIT_SUCCESS;
}

应该就可以了。如果我记错了ios_base,没有参考的情况下我无法记住十六进制标志的确切位置,对不起。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接