我遇到了atoi()
的奇怪问题我正在做这样的转换:
cout<<atoi(mystring.c_str())<<endl;
mystring是一个类似于3245524
的字符串上面的代码只返回3到stdout。
现在,如果我将字符串缩小,例如小于1000000,然后我将整个数字返回到stdout。
任何想法是什么导致了这个问题?这仍然远低于C ++ int的限制,所以它不是一些溢出。
编辑,一些额外的信息。当我将命令简化为简单:
cout<<mystring.c_str()<<endl;
标准输出类似于3.24552e + 06
问题与此有关吗?
答案 0 :(得分:1)
从你的编辑:
mystring的内容是&#34; 3.24552e + 06&#34; ,即数字3245520的科学(浮点)字符串表示。
因此,atoi按预期解析它在mystring中找到的第一个整数,即:3
如果mystring包含&#34; 3245520&#34;,你的atoi调用将返回整数3245520。