c++ - 当输入类型不正确时,C++ 第二个 cin 被吃掉了
问题描述
我想问一个奇怪的问题。
double Test1, Test2;
cout << "Please Input the First Number: ";
cin >> Test1;
cout << "\nPlease Input the Second Number: ";
cin >> Test2;
cout << "\nHere is the Answer: " << endl;
cout << Test1 << Test2 << endl;
如果我的输入Test1
是一个字符(例如'A'),第二个输入将被吃掉。
我试过使用cin.ignore(numeric_limits<streamsize>::max())
,cin.ignore(numeric_limits<streamsize>::max(), '\n')
但似乎没有任何效果。
为什么会出现这个问题?
解决方案
>>
一旦检测到无效字符,输入就会终止。该无效字符不会从流中删除,因此当您执行第二个时它仍然存在>>
。
推荐阅读
- haskell - 在 IO (Haskell) 中使用 mapM 函数打印键值元组列表的内容
- python - 如何使用pytest测试处理请求的Flask(非路由)函数?
- angular - 从 Angular html ionic 应用程序访问资产包中的图像文件
- python - python:使用请求模块保持HTTP连接打开
- r - R Shiny 响应式/动态分配对象名称
- loops - Pentaho 数据集成循环计数变量
- kotlin - 将库测试中的测试接口导入应用程序的测试
- javascript - 我可以将用户纬度保存到变量吗?
- javascript - 赠品获胜者未定义
- swift - 从视图外的函数访问@StateObject