Я хочу, чтобы программа зациклилась до тех пор, пока вход не будет действителен (x - это int и x> 0), но моя программа принимает вход, когда я даю ему 1,1 и бесконечно петляет, когда я введите строку, повторяя «Неверный ввод!».Проблемы с проверкой ввода в C++
#include <iostream>
using namespace std;
int main()
{
bool fail;
int x;
do{
cin >> x;
fail=(cin.fail() || x<=0);
if (fail){
cout << "Wrong input!" <<endl;
cin.clear();
};
}while(fail);
return 0;
}
Должен ли я использовать его вместо cin.clear()? – R2DToo
@ R2DToo Вставьте вызов до cin.clear() –
Все еще держит цикл навсегда для ввода «asd» .. И для «1.1» он возвращает 1 – R2DToo