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

时间:2009-02-03 17:55:50

标签: c++ string int casting

我正在尝试将bar中的值复制到整数foo中。

这是我到目前为止所拥有的。当我运行它时,我得到一个不同的十六进制值。任何帮助都会很棒。

int main()
{

    string bar = "0x00EB0C62";

    int foo = (int)bar;

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

    return 0;
}

因此输出应为0x00EB0C62。

5 个答案:

答案 0 :(得分:2)

atoi应该有效:

string bar = "0x00EB0C62";

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

答案 1 :(得分:2)

答案 2 :(得分:2)

Atoi当然有效,但如果你想用C ++方式做,那么串流就是最佳选择。它是这样的,注意,代码没有经过测试,可能不会开箱即用,但你应该得到一般的想法。

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

答案 3 :(得分:1)

当您将字符串转换为int时,您将获得该字符串的ascii值,而不是转换后的字符串值,以正确转换0x00EB0C62,您必须通过字符串解析器传递它。 (一种简单的方法是做ascii算术)。

答案 4 :(得分: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不正确,我就不记得没有引用的十六进制标志的确切位置。