std::cin does not wait for user input after the first iteration if the user input was non-int. It works if the inputted value was an int outside of the range (0 to 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";
}
Expected result:
Number to convert to 16-bit binary: abc
Invalid input. Try again. (ask user for input again)
Actual result:
Number to convert to 16-bit binary: abc
Invalid input. Try again.
Number to convert to 16-bit binary: Invalid input. Try again.
...
Any help would be really appreciated.