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-разрядный двоичный код: Неверный ввод. Попробуйте еще раз.
...
Любая помощь будет очень признательна.