C ++ ifstream failbit和badbit
在C ++的情况下,在什么条件下设置failbit
和badbit
标志?
据cplusplus.com :
当错误与操作本身的内部逻辑有关时,通常通过input操作来设置失败位 ,所以可以在stream上进行其它操作。 虽然badbit通常是在错误涉及stream的完整性丢失的情况下设置的,即使对stream执行不同的操作,该错误也可能会持续存在。 badbit可以通过调用成员函数来独立检查。
简而言之 ,如果您希望获取一个数字 ,那么这个数字就是failbit
。 如果发生严重的错误,会扰乱从stream中读取数据的能力 – 这是一个badbit
。
除了提到的标志,还有第三个非常相似 – eofbit
。 你可以使用几个函数来检查状态: ios::fail
, ios::good
和ios::bad
你也可以在MSDN资源上熟悉iostream库 。
最后 ,如果您在从文件读取(或访问某个文件或目录)的同时search如何处理所有错误位和exception的正确解决scheme,我强烈build议您阅读一篇非常全面和写得很好的文章“ 用C ++读取文件使用ifstream:正确处理badbit,failbit,eofbit和perror() ,最后find一些理想的解决scheme 。 这篇文章确实值得一读。