【问题标题】:C++ ifstream failbit and badbitC++ ifstream 失败位和坏位
【发布时间】:2012-06-20 13:24:38
【问题描述】:

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

【问题讨论】:

标签: c++ file-io ifstream


【解决方案1】:

根据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。这篇文章确实值得一读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2017-12-18
    • 1970-01-01
    相关资源
    最近更新 更多