如果在C ++中ifstream
,在什么条件下设置failbit
和badbit
标志?
答案 0 :(得分:57)
当错误与操作本身的内部逻辑相关时,failbit 通常由输入操作设置,因此可以对流进行其他操作。虽然 badbit 通常在错误涉及流的完整性丢失时设置,但即使对流执行了不同的操作,也可能会持续存在。可以通过调用成员函数bad来独立检查badbit。
在简单的单词中,如果您希望检索字母时获得数字,则为failbit
。如果发生严重错误,则会破坏从流中读取的能力 - 这是badbit
。
除了提到的标志之外,还有第三个非常相似 - eofbit
。您可以使用多种功能检查州:ios::fail
,ios::good
和ios::bad
您也可以在MSDN资源上熟悉iostream library。
最后,如果您在搜索文件(或访问某个文件或目录)时搜索如何处理所有错误位和异常的正确解决方案,我强烈建议您阅读一篇非常全面且写得很好的文章“Reading files in C++ using ifstream: dealing correctly with badbit, failbit, eofbit, and perror()”,最后您会发现一些 Ideal solutions 。这篇文章确实值得一读。