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()цикл становится бесконечным. Почему это? Что я могу сделать, чтобы превратить это в элегантно работающий цикл? Спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос