C ++ ifstream failbit和badbit

时间:2012-06-18 14:38:50

标签: c++ file-io ifstream

如果在C ++中ifstream,在什么条件下设置failbitbadbit标志?

1 个答案:

答案 0 :(得分:57)

根据cplusplus.com

  当错误与操作本身的内部逻辑相关时,

failbit 通常由输入操作设置,因此可以对流进行其他操作。虽然 badbit 通常在错误涉及流的完整性丢失时设置,但即使对流执行了不同的操作,也可能会持续存在。可以通过调用成员函数bad来独立检查badbit。

简单的单词中,如果您希望检索字母时获得数字,则为failbit。如果发生严重错误,则会破坏从流中读取的能力 - 这是badbit

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

您也可以在MSDN资源上熟悉iostream library

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