В этом цикле пользователь должен ввести int
, и программа проверяет, будет ли это странно, что он перейдет к следующим частям, но я не могу понять, почему, если пользователь вводит символ, который не является int
, программа попадает в бесконечный цикл!do-while бесконечный цикл с if C++
int num;
do {
cout << "PLEASE enter the num: ";
cin >> num;
if (num % 2 == 0)
cout << "Number should be odd!" << endl;
else
break;
} while (true);
//...
Причина в любом случае char/int != 0
и если это ==0
тоже должен остановиться на следующем cin
но это не остановит! Я тоже пробовал ws(cin)
, но это мне не помогло. Пожалуйста, расскажите мне, как я могу исправить эту проблему и почему это происходит.
См. [Это] (http://stackoverflow.com/questions/13378989/why-does-stringstream-change-value-of-target-on-failure). – LogicStuff