首页 > 解决方案 > 如果用户输入不是 int,则 std::cin 不等待用户输入

问题描述

如果用户输入为非整数,则 std::cin 在第一次迭代后不等待用户输入。如果输入的值是超出范围(0 到 65535)的 int,它会起作用。

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 位二进制的数字:abc

输入无效。再试一次。(再次要求用户输入)

实际结果:

要转换为 16 位二进制的数字:abc

输入无效。再试一次。

要转换为 16 位二进制的数字:输入无效。再试一次。

...

任何帮助将非常感激。

标签: c++validationinputio

解决方案


推荐阅读