C ++ atoi()只返回第一个数字

时间:2014-02-12 04:58:40

标签: c++ string int atoi

我遇到了atoi()

的奇怪问题

我正在做这样的转换:

cout<<atoi(mystring.c_str())<<endl;

mystring是一个类似于3245524

的字符串

上面的代码只返回3到stdout。

现在,如果我将字符串缩小,例如小于1000000,然后我将整个数字返回到stdout。

任何想法是什么导致了这个问题?这仍然远低于C ++ int的限制,所以它不是一些溢出。

编辑,一些额外的信息。当我将命令简化为简单:

cout<<mystring.c_str()<<endl;

标准输出类似于3.24552e + 06

问题与此有关吗?

1 个答案:

答案 0 :(得分:1)

从你的编辑:
mystring的内容是&#34; 3.24552e + 06&#34; ,即数字3245520的科学(浮点)字符串表示。
因此,atoi按预期解析它在mystring中找到的第一个整数,即:3 如果mystring包含&#34; 3245520&#34;,你的atoi调用将返回整数3245520。