Прежде всего я хотел бы сказать, что знаю, что использование 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() должен очистить плохой ввод; но он никогда не делает: он застревает в петле infintie. Какие?