C ++ ifstream failbit和badbit

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

据cplusplus.com :

当错误与操作本身的内部逻辑有关时,通常通过input操作来设置失败位 ,所以可以在stream上进行其它操作。 虽然badbit通常是在错误涉及stream的完整性丢失的情况下设置的,即使对stream执行不同的操作,该错误也可能会持续存在。 badbit可以通过调用成员函数来独立检查。

简而言之 ,如果您希望获取一个数字 ,那么这个数字就是failbit 。 如果发生严重的错误,会扰乱从stream中读取数据的能力 – 这是一个badbit

除了提到的标志,还有第三个非常相似 – eofbit 。 你可以使用几个函数来检查状态: ios::failios::goodios::bad

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

最后 ,如果您在从文件读取(或访问某个文件或目录)的同时search如何处理所有错误位和exception的正确解决scheme,我强烈build议您阅读一篇非常全面和写得很好的文章“ 用C ++读取文件使用ifstream:正确处理badbit,failbit,eofbit和perror() ,最后find一些理想的解决scheme 。 这篇文章确实值得一读。