美好的一天,我的老师说我应该学习C ++中的函数cin.clear()。我一直在寻找,但从未找到过正常的解释。 This resource is cplusplus说这个功能
为流的内部错误状态标志设置新值。标志的当前值被覆盖:所有位都被状态中的位替换;如果state是goodbit(为零),则清除所有错误标志。
但我不太明白“状态”是什么,并且从那里有标志和错误,这就是为什么,以及我们如何以0值替换它们。什么是“旗帜”以及为什么需要它们。正如他所说,我应该知道哪些参数或数据采用了函数cin.clear()并返回,我明白它不会返回,但它也需要一些东西?请帮忙。对不起英语不好,我通过翻译写信。
答案 0 :(得分:1)
函数std::basic_ios<>::clear()
影响
std::ios_base::iostate
位,大部分是
错误条件。该标准定义了四个&#34;四个&#34;位:
badbit
failbit
badbit
。最普遍的
原因是格式错误(尝试读取`int`时
输入中的下一个字符是`&#34; abc&#34;`)并且遇到了结尾
文件_before_已经能够读取足够的数据
请求输入。
eofbit
failbit
也将被设定;但它也可能是
因为输入流在预测时看到了文件的结尾。
(对于最后一种情况,考虑输入int
,其中
流中的剩余字符为&#34; 123&#34;,没有尾随
空白,甚至不是新行。为了知道它有
处理完所有相关字符后,流必须尝试
在3之后读取一个字符。在这种情况下,它设置
eofbit
,要记住它已经结束了
文件,但确实_not_设置failbit
,因为&#34; 123&#34;
是int
的有效complet输入。)
goodbit
在大多数情况下,failbit
和eofbit
仅与之相关
输入;如果是磁盘,您将获得(或应该获得)badbit
输出
已满。