[英]cin.fail error handling issues
我有一個小程序,我想評估輸入。 N變量的輸入只能是1到2000之間的數字。現在,如果我輸入正確/不正確的數字,但當我輸入一些隨機字母時,下面編寫的代碼可以正常工作(我必須確保只有數字,所以如果有人輸入字母,我必須處理),提示被寫出的數量是我輸入的字母的多少倍,而我只希望它被輸出一次。 因此,如果我寫34,它就可以工作。 如果我寫3355453,則會檢查輸入內容,並提示用戶輸入1到2000之間的數字。當我寫字母“ x”時,輸入內容會被檢查,並提示用戶輸入數字再次介於1到2000之間,但是如果我寫了更多字母,例如xxxx-提示符出現4次而不是1次。 如果我輸入7個字母,道具將出現7次。 有什么辦法解決這個問題? 謝謝!
do {
cout << "Please put in a number between 1 and 2000." << endl;
cin >> N;
if(cin.fail() || N<1 || N>2000){
cin.clear();
cin.ignore();
}
} while(cin.fail() || N<1 || N>2000);
將cin.ignore()
替換為cin.ignore()
cin.ignore(INT_MAX, '\\n');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.