可能的重复:
我需要手动关闭 ifstream 吗? https://stackoverflow.com/questions/748014/do-i-need-to-manually-close-a-ifstream
我需要打电话吗fstream.close()
or is fstream
一个在销毁时关闭流的正确 RAII 对象?
我有一个本地的std::ofstream
方法内的对象。我可以假设退出此方法后文件始终关闭而不调用 close 吗?我找不到析构函数的文档。
我认为之前的答案有误导性。
fstream
is一个适当的 RAII 对象,它does范围结束时自动关闭,绝对有没有任何必要打电话close
在范围结束时手动关闭就足够了。
特别是,这不是“最佳实践”,也没有必要刷新输出。
虽然德拉科沙的召唤是对的close
让您可以检查流的失败位,无论如何,没有人这样做。
在理想的世界中,人们只需简单地调用stream.exceptions(ios::failbit)
事先并处理抛出的异常fstream
的析构函数。但不幸的是,析构函数中的异常在 C++ 中是一个被破坏的概念,所以这不是一个好主意。
So if如果您想检查关闭文件是否成功,请手动执行(但只有那时)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)