c++ - 如果用户输入不是 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 位二进制的数字:输入无效。再试一次。
...
任何帮助将非常感激。
解决方案
推荐阅读
- haskell - 从源代码编译时与链接到包时不同的空间行为
- r - 在R中;如何将 str_extract 与 mutate 结合使用以基于现有列向数据帧添加新的“标志”列 (T/F)
- python - 跨多个轴计算平均值
- azure-active-directory - 自定义策略以 oauth2/authresp 上的错误 500 结束
- flutter - dart:http 中的下载进度
- python - CORS 有问题,不允许通信
- r - 多维度分组,汇总并添加计算列
- git - Github Insights 不显示特定用户提交
- npm - 安装 Framework 7 CLI
- kubernetes - Prometheus 抓取 K8s Ingress Endpoints