c++ - std::ofstream 是否保证在打开新文件时将关闭旧打开的文件?
问题描述
#include <fstream>
int main()
{
auto fout = std::ofstream("/tmp/a.txt");
fout.open("/tmp/b.txt"); // Will "/tmp/a.txt" be closed?
fout.open("/tmp/c.txt"); // Will "/tmp/b.txt" be closed?
}
如果打开新文件,是否 std::ofstream
保证将关闭旧打开的文件?
解决方案
第二次和后续调用将失败。
[filebuf.members]
basic_filebuf* open(const char* s, ios_base::openmode mode);
2效果:如果is_open() != false
,返回一个空指针。否则...
[ofstream.members]
void open(const char* s, ios_base::openmode mode = ios_base::out);
3效果:呼叫rdbuf()->open(s, mode | ios_base::out)
。如果该函数不返回空指针调用clear()
,否则调用setstate(failbit)
推荐阅读
- c++ - Clang 未在 -g 标志上生成调试信息
- c++ - 如何使用 = 复制向量数组引发错误表达式:转置指针范围
- kaitai-struct - kaitai 实例值三元:不能组合输出类型
- python - 将 OpenCV 与 PyPy 一起使用
- pyspark - mllib 如何在内部对不平衡数据集的类进行加权?
- python - 如何对预定义的列进行一种热编码
- azure - 如何使用 Azure Active Directory 设置 Ocelot Api 网关
- excel - 无法执行 vba 代码对象错误
- javascript - 使用谷歌脚本重命名谷歌驱动器中的所有文件
- spring - 如何从 Kotlin bean 定义文件中获取 ApplicationContext