Re: [問題] 計算機程式防呆

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間16年前 (2009/05/11 09:47), 編輯推噓2(201)
留言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
Thanks a lot !
05/11 13:57, 1F

05/11 14:28, , 2F
原來還有 cin.sync() 以前都是用 cin.ignore()...
05/11 14:28, 2F

05/11 17:51, , 3F
同樓上 XD
05/11 17:51, 3F
文章代碼(AID): #1A1uERp0 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A1uERp0 (C_and_CPP)