精華區beta NTUE-CS100 關於我們 聯絡資訊
關於老王要求輸入文字後 程式不能爆炸的簡易版解決辦法 先講原理 int x=0; cin >> x; //假設這時候user輸入文字a //餵cin吃a,因為x是整數,cin會拒絕。 //拒絕後cin幹了兩件事 //1. cin.fail()會傳回true,表示從鍵盤讀取失敗 //2. 程式接下來的cin全部失效 // //所以要開個if(cin.fail()){}來處理讀取失敗後的情況 sample code =============================== #include<iostream> using namespace std; int main(){ int x=0; cout << "請輸入一個整數:"; cin >> x; if(cin.fail()){ cout << "error!" << endl; //讀取失敗 cin.clear(); //clear() 把錯誤訊息清掉,cin才能恢復功能 cin.ignore(); //ignore() Buffer裡面可能還有垃圾,清乾淨 // 下次cin才能讀到正確的值。 }else{ cout << "get number! x=" << x << endl; } return 0; } ============================== -- -- P_Mat <無名個人版> bbs.wretch.cc -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.15.109