Re: [問題] 計算機程式防呆
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間16年前 (2009/05/11 09:47)推噓2(2推 0噓 1→)留言3則, 3人參與討論串2/3 (看更多)
※ 引述《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
推
05/11 13:57, , 1F
05/11 13:57, 1F
推
05/11 14:28, , 2F
05/11 14:28, 2F
→
05/11 17:51, , 3F
05/11 17:51, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章