Пожалуйста, прочтите следующий код:станд :: CIN бесконечный цикл от недопустимого ввода
#include <iostream>
#include <cstdlib>
int main() {
std::cout << "Please input one integer." << std::endl;
int i;
while (true) {
std::cin >> i;
if (std::cin) {
std::cout << "i = " << i << std::endl;
break;
} else {
std::cout << "Error. Please try again."<< std::endl;
std::cin.ignore();
std::cin.clear();
}
}
std::cout << "Thank you very much." << std::endl;
std::system("pause");
return 0;
}
Когда я даю зЬй :: CIN недопустимого ввода, такие как w
, то Error. Please try again.
является outputed бесконечно. Я думал, что std::cin.ignore
пуст входной поток, а std::cin.clear
возобновит его до нормального состояния. Итак, почему происходит бесконечный цикл?
'прозрачный' первый. 'ignore' второй. –