c++ - cin.fail() 不返回真
问题描述
我不确定我是否正确理解 cin.fail() 。当用户没有输入整数时,我试图让它返回 true。
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Please enter a positive integer: ";
cin >> number;
cout << cin.fail();
return 0;
}
每当我输入一个非整数(如 55.687)时,它都会为 cin.fail() 返回 0(false)。我不确定为什么。任何帮助将不胜感激。
解决方案
流尚未失败。
当>>
读入一个整数时,它会在找到一个不能在整数中的字符时立即停止。在 的情况下"55.687"
,这就是'.'
字符。因此cin >> number
读55
入number
,并将剩余部分".687"
保留在流中以供将来阅读。
给定相同的输入
int main() {
int number;
cout << "Please enter a positive integer: ";
cin >> number;
cin >> number;
cout << cin.fail();
return 0;
}
第二个cin >> number
将失败,因为'.'
无法解析为int
. 示例:https ://ideone.com/iB3aNk
推荐阅读
- primefaces - Primefaces 8 - 验证 primefaces Datepicker mindate 的值时出现 java.lang.UnsupportedOperationException
- kernel-module - 在 dpkg 中为模块构建指定内核头依赖项
- c# - 如何使用设备 tiffsep1 和其他分离色为每种分离色设置半色调(sethalftone)?
- python - 雅虎财经网络爬虫
- angularjs - 在 ng-click throghing 错误时在角度 1 动态选择下拉列表中设置已选择的值 - TypeError: selectize.setValue is not a function
- javascript - 为什么我的所有条目都没有执行我的云功能
- android - 兼容不同分辨率/英寸
- angular - 我将如何使用 RXJS 实现“延迟执行计时器”
- javascript - Charts.js 如何在单击条形图时添加链接?
- java - 如何修复 Android 图像捕获应用程序崩溃