在 C++ 语言中,有多种打开和操作文件的方法。然而,RAII 方法非常流行,因为析构器负责释放内存。
但是关闭文件流又如何呢?据我所知,析构器无论如何都应该关闭文件。然而,析构函数也不允许抛出任何异常。因此,如果我不关闭流并且它在块末尾被破坏,我可能会丢失有关错误的信息,这可能在关闭时发生。
我的想法正确吗?尽管采用 RAII 方法,我应该始终关闭我的流吗?
例子:
{
std::ofstream ofs;
ofs.open ("test.txt");
ofs << "blablabla";
//do i need the following?
ofs.close();
}
Run Code Online (Sandbox Code Playgroud)
答案取决于您是否想在关闭时对错误做出反应。
如果你想做出反应,你必须close
手动检查错误情况(未能关闭将设置failbit
):
std::ofstream str;
// Do something
str.close();
if (str.fail()) {
// react on error
}
Run Code Online (Sandbox Code Playgroud)
如果你不想做出反应,为什么还要麻烦呢?只需让析构函数关闭文件即可
归档时间: |
|
查看次数: |
1524 次 |
最近记录: |