作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 計算機程式防呆
時間Mon May 11 09:47:04 2009
※ 引述《sunnypeng (sunny)》之銘言:
: 我想請問一下
: 我有一個計算機程式
: 我的input是
: char op;
: double num;
: cin>>op>>num;
: 運作正常,我也可以判斷op是否為+-*/
: 但是我現在想要找一個方法,判斷我輸入的num是不是真的是一個數字
: 假設我輸入+5
: 程式正常運作
: 我輸入a5
: 程式會說invalid
: 但是我如果輸入+a
: 程式就crash了
: 有沒有辦法可以讓我判斷 輸入的是一個number而不是別的東西
: 謝謝
bool isOperator(char op)
{
return op == '+' || op == '-' || op == '*' || op == '/';
}
int main()
{
char op;
double num;
cin >> op >> num;
// 使用者的輸入無法轉換成數字時,cin.fail() 會回傳 true
while( cin.fail() || !isOperator(op) ){
cout << "invalid input" << endl;
cin.clear(); // 重新設定 cin 的讀取狀態
cin.sync(); // 使用者剛才輸入的垃圾還留在 cin 的 buffer 中
// 用 sync() 可以清掉這些垃圾
cin >> op >> num; // 重新讀取
}
...
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
推 sunnypeng:Thanks a lot ! 05/11 13:57
推 stonehomelaa:原來還有 cin.sync() 以前都是用 cin.ignore()... 05/11 14:28
→ james732:同樓上 XD 05/11 17:51