C++ ifstream failbit和badbit

Jak*_*ake 52 c++ file-io ifstream

ifstreamC++的情况下,在什么条件failbitbadbit标志设置?

gah*_*cep 62

根据cplusplus.com:

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

简单的话,如果你得到一个号码时,希望取回信件,它的failbit.如果发生严重错误,则会破坏从流中读取的能力 - 这是一个错误badbit.

除了提到的旗帜,还有第三个非常相似 - eofbit.可以使用多种功能检查状态:ios::fail,ios::goodios::bad

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

最后,如果您在从文件读取(或访问某个文件或目录)时搜索如何处理所有错误位和异常的正确解决方案,我强烈建议您阅读一篇非常全面且写得很好的文章" 在C++中读取文件 " 使用ifstream:正确处理badbit,failbit,eofbit和perror() ",最后你将找到一些理想的解决方案.这篇文章确实值得一读.