std :: cin не ожидает пользовательского ввода, если пользовательский ввод не был int - PullRequest
0 голосов
/ 19 апреля 2020

std :: cin не ожидает пользовательского ввода после первой итерации, если пользовательский ввод не был int. Это работает, если введенное значение было int вне диапазона (от 0 до 65535).

while(true)
{
    std::cout << "Number to convert to 16-bit binary: ";
    float decimal;
    std::cin >> decimal;
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

    if(decimal > 0 && decimal < 65536)
        return decimal;
    else
        std::cout << "Invalid input. Try again.\n";
}

Ожидаемый результат:

Число для преобразования в 16-битный двоичный код: ab c

Неверный ввод. Попробуйте еще раз. (попросите пользователя ввести еще раз)

Фактический результат:

Число для преобразования в 16-разрядный двоичный код: ab c

Неверный ввод. Попробуйте еще раз.

Число для преобразования в 16-разрядный двоичный код: Неверный ввод. Попробуйте еще раз.

...

Любая помощь будет очень признательна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...