Новое на C++. Имеет проблемы с правильным циклом при обработке ошибок. Я пытаюсь проверить, является ли пользовательский ввод целым, и является положительным.C++ Проверка целого числа.
do{
cout << "Please enter an integer.";
cin >> n;
if (cin.good())
{
if (n < 0) {cout << "Negative.";}
else {cout << "Positive.";}
}
else
{
cout << "Not an integer.";
cin.clear();
cin.ignore();
}
}while (!cin.good() || n < 0);
cout << "\ndone.";
Когда вводится нецелое число, цикл прерывается. Я чувствую, что я не понимаю, как использовать cin.clear()
и cin.ignore()
и статус cin
во время этого цикла. Если я удалю cin.ignore()
, цикл станет бесконечным. Почему это? Что я могу сделать, чтобы сделать это в элегантно функционирующий цикл? Спасибо.
Используйте отладчик. –