Помощь в использовании iostream с циклами while
У меня возникла проблема: всякий раз, когда я запрашиваю у пользователя целочисленный конкретный ввод, если пользователь введет что-то, что не является целым числом, мой код предложит пользователю ввести ввод 3 раза, прежде чем разрешить пользователю ввести ввод.
Вот мой очень простой код:
int main() { bool valid = false; bool bfail; int mStreetNum; while (!valid) { cout << "Enter street number: "; cin >> mStreetNum; bfail = cin.fail(); if (bfail) { cin.clear(); cin.ignore(); continue; } valid = true; } }
Вот такие результаты:
Enter street number: gef Enter street number: Enter street number: Enter street number: edf Enter street number: Enter street number: Enter street number: 12
Как мне снова предложить пользователю ввести данные, не запрашивая их несколько раз, прежде чем он сможет войти? Я протестировал это на visual studio c++, на Windows 10 cmd с установленным компилятором GNU g++ и на машине Linux.
Что я уже пробовал:
Я попытался использовать свой отладчик, чтобы попытаться выяснить, что происходит, но он по какой-то причине, кажется, пропускает cin после того, как я намеренно ввожу нецелочисленный ввод. Мой код достаточно прост, и я искренне недоумеваю, почему это происходит.