無限循環所以我想接受兩個輸入,一個字符串和一個int,並且當用戶輸入「結束」退出循環。 我的問題是,當輸入「end」時,它被卡在一個循環中,因爲(我假設)當用戶只輸入一個時它需要兩個輸入。 我已經做了一些研究,發現丟棄輸入並重置它與cin.ignore()
和cin.clear()
重置它,但是,這些似乎只適用於接受單一輸入,因爲我要求在一條線上的兩個單獨的輸入,並且它似乎沒有工作。 我的代碼正在做的事情基本上是要求一個事物列表(名稱值),將它存儲在一個類的數組中,並且限制爲10個項目。所以,當輸入「結束」時,它只需要退出while循環。其他一切似乎都很好,即當我輸入10個項目時,它退出循環,其餘代碼按照它應該執行的方式執行。所以在輸入'end'時似乎有問題。 (p.s. a是一個int類型的字符串和b)。 的代碼段是:如何停止由於無效輸入C++
do {
cout << "Enter the item and value (enter 'end' to stop): ";
cin >> a >> b;
items1.set_name(a, i);
items1.set_price(b, i);
i++;
} while (i < 10 && a != "end");
這似乎應該是很簡單的,我很抱歉,如果一個愚蠢的問題,但我不能弄明白HAHAH。 非常感謝您的幫助。
什麼類型的了'和'B'的'? – Chad
可能的重複[爲什麼如果我輸入一個字母而不是數字會得到一個無限循環?](http://stackoverflow.com/questions/19521320/why-do-i-get-an-infinite-loop- if-i-enter-a-letter-than-a-number) – Galik
輸入後,您不會測試流狀態。在處理數據之前有一個最後的'f(cin)'。 –