c++ - 在循环中获取坐标的函数在输入 char 值后变为无穷大
问题描述
我对从用户获取坐标的函数有疑问,该坐标等于或大于 0 且小于某个值 M(M,x,y 是整数)。当我只输入 itegers 时,一切都很好,但是当我输入两个或一个字符时,我的循环进入无穷大,而无需再次输入这些坐标。
我的代码:
do {
cout << "\t" << "Give coordinates in following format: X Y." << endl;
cout << "\t";
cin >> y >> x;
} while (x < 0 || x > M || y < 0 || y > M);
解决方案
std::cin
有一些被称为“失败”状态的东西。如果您尝试输入预期类型的值以外的值,std::cin
将进入所述失败状态,并且将不再接收输入,因此它不会等待您为其提供值。
您可以检查它是否已进入失败状态:cin.fail()
,如果它已进入失败状态,则返回True
。
您可以使用 清除失败状态cin.clear()
。
推荐阅读
- html - Bootstrap 4 视频,iframe 标签未显示
- python - 试图让机器人说出错误处理程序缺少什么参数
- react-native - Metro 服务器崩溃
- python - 我想从 'tut_1.kv' 访问 'md_bg_color' 并从 'tut_1.py' 更改它的值
- saml - 如何配置带有 SAML 2 IDP 提示的 MS PowerApps 门户
- python - 列表到 numpy 数组,不一致的字符串到浮点转换错误
- dpdk - DPDK testpmd 显示链接已关闭,即使它已启动
- python - 网络摄像头上的水印覆盖非常慢
- passport.js - 如何链接帐户nestjs passportjs?
- pagination - 如何在下一个js中实现无限滚动?