Что я упустил text text

87
21 октября 2021, 21:10
int x;
Label1:
cout << "Vvedite x:/t";
cin >> x;
if(!x) // Kogda nichego ne vvedeno ili vvedeno bukvi
goto Label1;

Получается бесконечный цикл

Answer 1

Так писать не стоит. Совсем не стоит. Да и goto не лучший вариант. Можно делать как-то так.

do {
    cin.clear();
    //cin.ignore();
    cin.ignore(100500, ' ');      //skip until space   
    //promt
} while ( !(cin >> x));

Но помните, что ввод вида [число]* будет распознано как число. Особенность с++. Если надо и такое отлавливать, то читаем как строку и потом преобразовываем в число.

cin.clear и cin.ignore нужны для сброса failbit и предыдущего ввода соответственно, иначе всегда будет ошибка чтения.