Bitte lesen Sie den folgenden Code:std :: cin Endlosschleife aus ungültige Eingabe
#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;
}
Wenn ich std :: cin geben eine ungültige Eingabe, wie w
, dann wird Error. Please try again.
outputed unendlich. Ich dachte, std::cin.ignore
würde den Eingangsstrom leer, und std::cin.clear
würde es wieder in den normalen Zustand. Warum passiert die Endlosschleife?
"klar" zuerst. 'ignorieren' Sekunde. –