看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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