如果我有一个可能已经打开或未打开的 std::ofstream
,尝试关闭是否安全?换句话说,如果 !is_open()
,close()
会发生什么不好的事情(抛出异常等)?例如:
std::ofstream out;
if (some_condition)
{
out.open(path, std::ios::out);
}
我处理完文件后,可以直接说
out.close();
还是我应该先检查一下
if (out.is_open())
out.close();
在cppreference上,有关std::basic_fstream::close
的唯一描述是:
关闭与文件的关联。
实际上调用了rdbuf()->close()
。如果操作期间发生错误,则会调用setstate(failbit)
。
std::ofstream
,这也是我喜欢的原因,但在这种特殊情况下,我希望文件能够比预期更早地关闭。 - Cory Kramerstd::ofstream::close
,你会看到调用未打开文件的close
的具体例子。简而言之,不会发生什么严重问题,只是设置了failbit,因此之后对ofstream
进行的任何操作可能会引起问题。 - R_Kapp