以下代碼將std::string
轉換爲int
,問題在於它無法從真正的整數或隨機字符串中辨別出這一事實。有沒有一種系統的方法來處理這樣的問題?如何檢查std :: string,如果它的確是一個整數?
#include <cstring>
#include <iostream>
#include <sstream>
int main()
{
std::string str = "H";
int int_value;
std::istringstream ss(str);
ss >> int_value;
std::cout<<int_value<<std::endl;
return 0;
}
編輯:這是我很喜歡,因爲它是非常小的,優雅的解決方案!它不適用於負數,但我只需要積極的數字。
#include <cstring>
#include <iostream>
#include <sstream>
int main()
{
std::string str = "2147483647";
int int_value;
std::istringstream ss(str);
if (ss >> int_value)
std::cout << "Hooray!" << std::endl;
std::cout<<int_value<<std::endl;
str = "-2147483648";
std::istringstream negative_ss(str);
if (ss >> int_value)
std::cout << "Hooray!" << std::endl;
std::cout<<int_value<<std::endl;
return 0;
}
'if(ss >> int_value)''可能是一個好的開始。 – WhozCraig 2013-04-24 00:56:13
@WhozCraig不確定你的意思,請你詳細說明一下? – pandoragami 2013-04-24 00:56:50
*試試看。*用'if(ss >> int_value)std :: cout <<「Hooray!」替換當前的裸'ss >> int_value;'。 << std :: endl;' – WhozCraig 2013-04-24 00:58:52