【发布时间】:2012-06-20 13:24:38
【问题描述】:
如果是 C++ 中的ifstream,在什么条件下设置failbit 和badbit 标志?
【问题讨论】:
-
@Jake 你读过文档吗?
如果是 C++ 中的ifstream,在什么条件下设置failbit 和badbit 标志?
【问题讨论】:
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。这篇文章确实值得一读。
【讨论】: