gpt4 book ai didi

c++ - C++ 流中的eof()、fail()、bad() 和good() 之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 21:35:18 26 4
gpt4 key购买 nike

我目前正在通过 C++ Primer 第 5 版学习 C++。由于看似矛盾的信息,我对检查流状态的方法的行为感到困惑。在第 312 页上,它指出

If any of badbit, failbit, or eofbit are set, then a condition that evaluates that stream will fail.

在下一页,它说 s.fail()

true if failbit or badbit in the stream is set

还有那个

the code that is executed when we use a stream as a condition is equivalent to calling !fail().

这没有意义,因为任何使用 fail() 的表达式都应该只知道 failbitbadbit(因为它们是构成 fail() 的值)并且 !fail() 等同于 badbit 的所有三个failbiteofbit 为假。

这些看似矛盾的陈述如何组合在一起?

最佳答案

第二个和第三个陈述是正确的,符合C++标准。那么,第一个只是一个错误。 failoperator booloperator ! 都没有考虑流的 eofbit 状态。只有 goodeof 可以。

在通常的事件过程中,尝试读取超过流的末尾会同时设置 eofbitfailbit,这可能是这个错误如此严重的原因之一易于制作。

关于c++ - C++ 流中的eof()、fail()、bad() 和good() 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43084612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com