我目前正在从 C++ Primer 5th edition 学习 C++。由于看似相互矛盾的信息,我对检查流状态的方法的行为感到困惑。在第 312 页它指出
如果有任何的
badbit,failbit或eofbit设定,然后一个条件,评估该流将失败。
在下一页,它说s.fail()是
如果
failbit或badbit在流中设置,则为真
然后
当我们使用流作为条件时执行的代码相当于调用
!fail().
这是没有意义的,因为任何表达式使用fail()应该只知道failbit和badbit(因为这些是什么弥补fail()的值),但!fail()等同于所有3的badbit,failbit以及eofbit是假的。
这些看似矛盾的陈述是如何结合在一起的?
第二个和第三个陈述是正确的并且符合 C++ 标准。那么,第一个根本就是一个错误。既不fail也不operator bool考虑流的状态operator !。eofbit唯good且eof做。
在通常的事件过程中,尝试读取超过流末尾的内容会同时设置 和eofbit,failbit这可能是这个错误如此容易犯的原因之一。
| 归档时间: |
|
| 查看次数: |
2675 次 |
| 最近记录: |