1

我正在编写一个有时必须清理的 C++ ofstream - 我正在写入的文件应该被删除,并且类应该被删除和清理。

如何?(除了关闭它并按名称删除它)。

(至少该文件不应该以打开它的预期位置和文件名存在 - tempfile 目录可以)

4

1 回答 1

1

据我所知,没有其他办法。关闭文件并使用 remove其名称。

这可能最好由某种 RAII 类来处理;我经常使用一个OutputFile类,它隐式转换为std::ostream&(用于输出)。构造函数采用文件名;有一个commit关闭文件的函数,但是如果之前调用了析构函数commit,它不仅会关闭文件,还会删除它。类似地,有一个 UpdateFile类打开 filename.new-commit然后重命名 filenamefilename.bak (删除任何以前存在的具有该名称的文件),然后移动filename.newfilename. 析构函数删除 filename.new. (变体检查新内容是否与旧 in 不同commit,因此如果内容没有变化,文件时间戳不会改变。)

于 2013-02-26T10:14:36.887 回答