【问题标题】:How can I convert a string to an integer in C++ [duplicate]如何在 C++ 中将字符串转换为整数 [重复]
【发布时间】:2010-10-05 05:23:02
【问题描述】:

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

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

int main()
{

    string bar = "0x00EB0C62";

    int foo = (int)bar;

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

    return 0;
}

所以输出应该是0x00EB0C62。

【问题讨论】:

  • 重复,根据 Matta 的评论。请删除
  • 这个处理十六进制数字,这可能对那些不熟悉不同数字格式的人有用。我会说离开它。
  • 我不是想将十六进制转换为十进制我想将十六进制值复制到整数 foo 中。

标签: c++ string int casting


【解决方案1】:

atoi 应该可以工作:

string bar = "0x00EB0C62";

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

【讨论】:

  • 如果字符串中有'x'这样的字符是不行的不是吗?
  • 它对我不起作用。它返回 0。
【解决方案2】:

【讨论】:

    【解决方案3】:

    Atoi 确实有效,但如果您想以 C++ 的方式进行操作,则字符串流是最佳选择。它是这样的,请注意,代码未经测试,可能无法开箱即用,但您应该了解总体思路。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        这就是字符串流的用途,你想做这样的事情。

        #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 不正确,我不记得没有参考的十六进制标志的确切位置。

        【讨论】:

          猜你喜欢
          • 2015-03-14
          • 2011-08-22
          • 2016-03-16
          • 2012-06-28
          • 2012-03-28
          • 1970-01-01
          • 2012-04-30
          • 2016-01-26
          相关资源
          最近更新 更多