可能重複:
How to parse a string to an int in C++?如何識別一個字符串是否是一個數字,如果是,將其轉換爲一個int? (C++)
我有一個簡單的程序,這就是輸入經常是數字(猜謎遊戲差不多),但我需要的地方,如果增加一個選項用戶鍵入「幫助」或「/ h」或「?」該程序將顯示幫助菜單...
所以基本上我需要能夠區分,如果輸入的是一個字符串或數字,如果它的一個數字,將其轉換爲int ...
完成這件事的最好方法是什麼?我知道我可以使用atoi
將字符串轉換爲int,但是如何檢查值是否爲數字?
謝謝!
編輯:根據我從你的答案中讀到的大多數人說,stringstream
是最好的方式去...我做了一小段代碼,試圖瞭解如何stringstream
工程,但我得到一些錯誤......任何想法爲什麼?
#include <iostream>
#include <string>
using namespace std;
int str2int (const string &str) {
std::stringstream ss(str);
int num;
if((ss >> num).fail())
{
num = 0;
return num;
}
return num;
}
int main(){
int test;
int t = 0;
std::string input;
while (t !=1){
std::cout << "input: ";
std::cin >> input;
test = str2int(input);
if(test == 0){
std::cout << "Not a number...";
}else
std::cout << test << "\n";
std::cin >> t;
}
return 0;
}
錯誤:
Error C2079:'ss' uses undefined class std::basic_stringstream<_elem,_traits,_alloc>'
Error C2228: left of '.fail' must have class/struct/union
Error C2440: 'initializing': cannot convert 'const std::string' into 'int'
你在想什麼。以字符串輸入,檢查你的特殊情況,然後將其他東西轉換爲int – 2012-03-22 05:00:13
@BrianRoach是的,我知道那是我需要做的......我需要將所有輸入轉換爲一個字符串,然後執行檢查,問題是如何做檢查? – 2012-03-22 05:03:37
@GalAppelbaum - 輸入*是*字符串(文本)數據。 – 2012-03-22 05:07:26