2010-11-06 32 views
3

我看到這個代碼不尋常的問題不起作用int類型變量循環一遍又一遍地重複,不問我是否重複。 這個問題剛剛出現,當我把字符不整數。 對於也出現一個循環,並在int變量字符如我所料

爲什麼要這樣呢? 謝謝

回答

3

在讀取不能轉換的用戶輸入後,輸入流處於無效狀態。您需要清空流並調用clear方法重置流上的錯誤位以恢復正常操作。

如果檢測到輸入不成功(使用輸入流狀態位,通過像good()fail()等方法訪問),你可以使用類似下面的代碼重置流:

std::cin.clear(); 
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
0

你把cin在你無法從中提取一個int時處於錯誤狀態,並且沒有恢復。因此,當您嘗試從中提取重複數據流時,數據流仍然處於失敗狀態。你需要檢查數字的失敗(只需使用if(cin >> number))。

相關問題