函数cin.clear()在C++详细的描述中做了什么



美好的一天,我的老师说我应该学习是什么使函数cin.clear((在C++中。我一直在寻找,但从未找到正常的解释。这个资源是cplusplus说这个功能

为流的内部错误状态标志设置新值。标志的当前值被覆盖:所有位都替换为处于状态的位;如果状态为 goodbit(为零(,则清除所有错误标志。

但我不太明白"状态"从那里有标志和错误,这就是为什么,以及我们如何在 0 值处替换它们。什么是"标志"以及为什么需要它们。正如他所说,我应该知道哪些参数或数据需要函数cin.clear((并返回,我知道它不返回,但它也需要一些东西?请帮忙。对不起,英语不好,我通过翻译写信。

函数std::basic_ios<>::clear()影响 std::ios_base::iostate位,在大多数情况下,错误条件。 该标准定义了"四个"位:

badbit
如果最后一个输入由于某些硬件故障而失败,例如,磁盘上的读取错误。 (在实践中,我不确定所有实现都检查这一点;我怀疑有些人会只需将其视为文件末尾即可。
failbit
如果最后一个输入由于其他原因而失败,则设置这将设置badbit. 最常见的原因是格式错误(尝试读取"int"时输入中的下一个字符是"ABC"(,并且遇到结尾文件 _before_ 已经能够读取足够的数据请求的输入。
eofbit
这不是错误条件;它将随时设置流看到文件的末尾。 这可能是因为它还需要另一个字符,以便解析输入,在这种情况下 还将设置failbit;但也可能是因为输入流在前瞻时看到了文件的结尾。(对于最后一种情况,请考虑输入一个int,其中流中的剩余字符为"123",没有尾随空格,甚至没有新行。 为了知道它有处理了所有相关字符,流必须尝试在 3. 在这种情况下,它会设置 eofbit,要记住它已经看到了文件,但它没有_不_设置failbit,因为"123"是 int 的有效完成输入。
goodbit
这甚至不是一个位模式,而只是一个特殊的值前面的位都没有设置。

在大多数情况下,failbiteofbit仅与以下方面相关输入;如果磁盘,您将在输出时获得(或应该获得(badbit已满。

相关内容

  • 没有找到相关文章

最新更新