嘿我的代碼被卡住循環我的時候,當我輸入數字字母,它只是洪水我的輸出「無效的輸入,請再試一次。這只是一個簡單的菜單。當數字輸入時,代碼卡住循環
0
A
回答
3
如果您輸入任何「無效」,例如從cin讀取將導致錯誤,您必須調用cin.clear()
才能夠讀取更多輸入,否則操作符中的流將立即返回。
通常,在讀取用戶輸入時,您檢查cin的狀態並退出,或者在其無效時執行一些錯誤處理。此外,在一個失敗的輸入嘗試,被忽略導致錯誤仍然會坐在CIN,並且需要字符(例如,直到下一個換行符):
#include <iostream>
#include <limits>
int main() {
int userOption;
while(1) {
while(!(std::cin >> userOption)) {
std::cout << "Invalid input." << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << userOption << std::endl;
}
return 0;
}
0
問題是與以下代碼行,
cin.ignore(numeric_limits<streamsize>::max(), '\n');
當您輸入單個號碼時,您不必忽略任何其他字符。所以只需刪除上面的代碼行來糾正你的程序。
+0
這取決於你想要的東西:如果你想把輸入'1iosdf'解析爲1,其餘的被忽略,那麼忽略剩下的行就是要走的路。 – zennehoy
相關問題
- 1. 當在C中輸入字符時,代碼循環
- 2. Java程序在輸入循環時出現卡住一次
- 3. 卡住while循環
- 4. 當輸入錯誤輸入時無限循環無限循環
- 5. HttpWebResponse在循環中運行時卡住
- 6. 使用colMonitoredevents時DoWhile循環卡住
- 7. 簡單循環卡住
- 8. C#SendKey循環卡住
- 9. Python - 「While」循環卡住
- 10. java while循環卡住
- 11. Java/MySQL循環...卡住了?
- 12. PowerShell bash循環被隨機卡住等待鍵盤輸入
- 13. 卡住Ada計劃 - 卡住輸入
- 14. 我的代碼沒有加載(卡住do/while循環?)
- 15. 當代碼被添加到循環時Java循環不循環
- 16. 代碼卡住了?
- 17. 當使用==或!時,循環被卡住了= =
- 18. 對於循環卡遊戲卡住
- 19. C++循環在第一次迭代時被卡住
- 20. 當while循環開始時代碼停止計算並輸出數字
- 21. Java - 從輸入流讀取時卡住
- 22. javascript循環不寫入數字輸入
- 23. 卡住使用嵌套循環根據數字縮進空格
- 24. 當我輸入非整數輸入時,爲什麼我的代碼運行到無限循環?
- 25. 當輸入新變量時,C++ For-Loop會卡住
- 26. 當名稱爲空時該怎麼辦代碼卡住了
- 27. 當代碼從一個循環重複時,用戶輸入選項丟失
- 28. 如果用戶輸入非數字字符,則重複循環代碼?
- 29. 當用戶輸入輸入密鑰時,循環未閉合?
- 30. 當輸入特定鍵時輸入循環 - Java
你忘了問一個問題。 – crush
數字字母? –
您不檢查輸入是否成功。你必須始終做的事情。 'if(!(cin >> userOption)){/ *無效輸入,請勿使用userOption * /}' – jrok