2014-02-12 38 views
0

我遇到的atoi)一個奇怪的問題(C++的atoi()只返回第一個數字

我做一個轉換是這樣的:

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

MyString的是像3245524

字符串

上面的代碼只會返回3到標準輸出。

現在,如果我使字符串變小,例如少於1000000,然後我得到整個號碼返回到標準輸出。

任何想法是什麼導致這個問題?這仍然遠低於C++ int的限制,所以它不會溢出。

編輯,一些額外的信息。當我簡化命令簡單:

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

的標準輸出是一樣的東西3.24552e + 06

與此有關的問題?

+1

提供一個演示此問題的完整可編譯示例。 –

+5

所以,根據你的編輯,'mystring'實際上就是沒有像「3245524」 –

+0

是的。將結束atoi之後3 – clancer

回答

1

從您的編輯:
MyString的內容是「3.24552e + 06」,即科學(浮點)字符串數3245520.
因此表示,解析的atoi發現MyString中的第一個整數,如下所示:3.
如果mystring包含「3245520」,則您的atoi調用將返回整數3245520.