c++ - 如何修复我的代码中的无限循环?我认为它跳过了第二个 cin 所以它一直在循环
问题描述
如果我的输入不是一个整数,它会给出一个无限循环,我认为它会跳过第二个 cin,但我不知道如何修复它。
cout << "Number of days : ";
int days;
cin >> days;
while(!cin){
cout << "Invalid";
cin >> days;
}
解决方案
当operator>>
无法解析输入时,它会将流置于错误状态,您需要明确清除该错误状态,然后才能再次从流中读取,例如:
cout << "Number of days : ";
int days;
while (!(cin >> days)) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid";
}
推荐阅读
- php - 如何在 mysql 程序中插入 100 条记录并在 MySQL 程序中循环而不是在 PHP 中?
- java - 杰克逊链自定义反序列化器
- telegram - 电报网络登录小部件 /setdomain 不起作用
- security - 无法为云端设置 cookie 以实现基于安全 cookie 的身份验证
- mongodb - 更新嵌入文档中的数组
- java - Selenium @FindBy linkText 或 @FindBy partialLinkText 不起作用
- powershell - 如果行不匹配,则添加内容
- asp.net - Sharepoint Online 上禁止 WebRequest
- java - 如何在java中将Blob数据写入html
- android - 片段是否应该能够更改宿主 Activity 中的视图状态?