gpt4 book ai didi

c++ - 带有文件流的 RAII

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:36 25 4
gpt4 key购买 nike

在c++语言中,有多种打开和操作文件的方法。然而,RAII 方法非常流行,因为析构函数负责释放内存。

但是文件流的关闭呢?据我所知,析构程序无论如何都应该关闭文件。然而,析构函数也不允许抛出任何异常。因此,如果我不关闭我的流并且它在 block 的末尾被破坏,我可能会丢失有关错误的信息,这可能在关闭时发生。

我的想法对吗?尽管采用了 RAII 方法,但我应该始终关闭我的流吗?

例子:

{
std::ofstream ofs;
ofs.open ("test.txt");

ofs << "blablabla";

//do i need the following?
ofs.close();
}

最佳答案

答案取决于您是否想在关闭时对错误使用react。

如果你想使用react,你必须手动关闭并检查错误条件(关闭失败将设置failbit):

std::ofstream str;
// Do something
str.close();
if (str.fail()) {
// react on error
}

如果您不想使用react,那又何必呢?就让析构函数关闭文件

关于c++ - 带有文件流的 RAII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com