在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