我知道我可以通过操作员检查是否成功打开文件!和 std::fstream 类的成员函数 fail()。
但是我可以为此目的使用成员函数 bad() 吗?是否符合标准?
该函数bad()
产生true
“不可恢复的错误”——不管这意味着什么。基本上,bad()
每当由于某种形式的格式错误以外的原因而失败时,就会设置它。有趣的是,当文件缓冲区失败时,open()
各种文件流类(、、和)的功能std::ofstream
都std::ifstream
设置std::fstream
了!也就是说,您不能用于测试是否失败。您可以使用. 就个人而言,我不会打扰并使用转换为:std::ios_base::failbit
open()
stream.bad()
open()
stream.fail()
bool
std::ofstream out("file");
if (out) {
process();
}
else {
report_error();
}
是的,您可以,ios::bad()
返回 a boolean
,并且!
将简单地否定boolean
( 即true
-> false
,反之亦然)。
这是否是您打算做的事情是另一个问题。bad()
检查流的完整性丢失而不是打开失败。