在ifstream
C++ 中,在什么条件下设置failbit
和badbit
标志?
问问题
53398 次
1 回答
78
当错误与操作本身的内部逻辑有关时, failbit通常由输入操作设置,因此流上的其他操作可能是可能的。而当错误涉及流的完整性丢失时,通常会设置badbit ,即使在流上执行不同的操作也可能会持续存在。通过调用成员函数 bad 可以独立检查 badbit。
简单来说,如果你在期望检索一个字母时得到一个数字,它就是. 如果发生严重错误,这会完全破坏从流中读取的能力 - 它是一个.failbit
badbit
除了提到的标志外,还有第三个非常相似 - eofbit
。您可以使用多种功能检查状态ios::fail
:ios::good
和ios::bad
您也可以在 MSDN 资源中熟悉iostream 库。
最后,如果您在读取文件(或访问某些文件或目录)时寻找如何处理所有错误位和异常的正确解决方案,我强烈建议您阅读一篇非常全面且写得很好的文章“ Reading files in C++ ”使用 ifstream:正确处理 badbit、failbit、eofbit 和 perror() ”,最后你会发现一些理想的解决方案。这篇文章确实值得一读。
于 2012-06-18T14:40:58.253 回答