Возможный дубликат:
Почему это чтение cin застряло?
Я перегрузил оператор istream (istream &operator>>...
), и он принимает точку в формате:
(<x-coordinate>,<y-coordinate>)
Я хочу проверить это несколько (10) раз, поэтому написал:
for (int i = 0; i < 10; i++) {
cin >> a;
if (!cin.fail()) { cout << a << endl; }
else { cout << "Invalid input!" << endl; cin.clear(); }
}
РЕДАКТИРОВАТЬ:
Теперь у меня есть следующий код:
for (int i = 0; i < 10; i++) {
cin >> a;
if (!cin.fail()) { cout << a << endl; }
else {
cout << "Invalid input!" << endl; cin.clear();
while (!cin.eof()) { cin.ignore(); } cin.ignore();
}
}
Игнор предложил Ктулху. Однако проблема в том, что cin по-прежнему выводит «Неверный ввод!» после выполнения кода выше:
(3,3) <-- input
(3,3) <-- output
Invalid output! <-- second output
Есть ли способ, которым я могу очистить то, что находится в cin?
cin.clear()
очищает флаги, а не содержимое. Вы хотитеignore
. - person chris   schedule 28.10.2012tl;dr
не является хорошим ответом на полезный ответ. - person nothrow   schedule 28.10.2012