66

ifstreamC++ 中,在什么条件下设置failbitbadbit标志?

4

1 回答 1

78

根据cplusplus.com

当错误与操作本身的内部逻辑有关时, failbit通常由输入操作设置,因此流上的其他操作可能是可能的。而当错误涉及流的完整性丢失时,通常会设置badbit ,即使在流上执行不同的操作也可能会持续存在。通过调用成员函数 bad 可以独立检查 badbit。

简单来说,如果你在期望检索一个字母时得到一个数字就是. 如果发生严重错误,这会完全破坏从流中读取的能力 - 它是一个.failbitbadbit

除了提到的标志外,还有第三个非常相似 - eofbit。您可以使用多种功能检查状态ios::failios::goodios::bad

您也可以在 MSDN 资源中熟悉iostream 库。

最后,如果您在读取文件(或访问某些文件或目录)时寻找如何处理所有错误位和异常的正确解决方案,我强烈建议您阅读一篇非常全面且写得很好的文章“ Reading files in C++ ”使用 ifstream:正确处理 badbit、failbit、eofbit 和 perror() ”,最后你会发现一些理想的解决方案。这篇文章确实值得一读。

于 2012-06-18T14:40:58.253 回答