在C++语言中,如何在文件上打开和操作有多种方式。然而,RAII方法非常受欢迎,因为摧毁者注意释放内存。带文件流的RAII
但是关闭文件流呢?据我所知,无论如何,破坏者应该关闭文件。但是,破坏者也不允许抛出任何例外。所以,如果我不关闭我的流,并且它在块的末尾被破坏,我可能会丢失有关错误的信息,这可能会在关闭时发生。
我的想法是否正确?尽管RAII方法我应该总是关闭我的流?
例子:
{
std::ofstream ofs;
ofs.open ("test.txt");
ofs << "blablabla";
//do i need the following?
ofs.close();
}
当文件流对象被包含在其中时,文件流对象应该被销毁(并因此关闭,但不会抛出异常)。不需要在析构函数中显式关闭文件。 –
不,你不需要手动'.close()',这是RAII的_whole point_。 – emlai