1
我有一個小程序,我想評估輸入。 N變量的輸入只能是1到2000之間的一個數字。現在,如果我輸入正確/不正確的數字,我寫的下面的代碼工作正常,但是當我輸入一些隨機字母時(我必須確保只有數字,所以我必須處理,如果有人放入信件),提示會寫出儘可能多的信件,我已經放入,我只希望它被放出一次。所以,如果我寫34,它的作品。如果我編寫3355453,則會檢查輸入,並提示用戶再次嘗試使用1到2000之間的數字。當我寫入字母'x'時,會檢查輸入並提示用戶再次嘗試輸入數字再次介於1到2000之間,但如果我編寫更多字母(例如xxxx),則提示會出現4次而不是1次。如果我輸入7個字母,propt出現7次。任何方式來解決這個問題?謝謝!cin.fail錯誤處理問題
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);
什麼樣的魔力,這是? :D謝謝,這究竟做了什麼?除了工作:D – 2014-12-02 22:06:06
請看看文檔http://www.cplusplus.com/reference/istream/istream/ignore/。默認情況下,忽略調用忽略* one *字符或直到它遇到EOF,在我們的情況下,我們將忽略儘可能多的字符(MAX_INT足夠大),直到我們遇到/到達行尾符號('\ n')由用戶輸入。 – 2014-12-02 22:09:41