首先我想說我知道使用getline是一個更好的選擇,但是,我很好奇爲什麼這個代碼不能按預期工作:我不明白爲什麼cin的未知行爲
#include <iostream>
#include <string>
using namespace std;
int main() {
while(1) {
int input;
cout << "---> ";
cin >> input;
if(cin.fail()) {
char rd = cin.get();
cout << "failure" << rd << "=" << cin.fail() << " " << endl;
}
}
return 0;
}
預期:如果輸入一個整數,否則繼續CIN失敗了,我們拉一個字符從標準輸入,基本上輸出。然後我們繼續循環。
我看到它的方式,最終cin.get()應該清除不好的輸入;但它從來沒有這樣做:它陷入無限循環。什麼?