C ++ ofstream删除和清理

时间:2013-02-26 09:57:43

标签: c++ stl standard-library ofstream

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

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

(至少文件不应该与打开它的目标位置和文件名一起存在 - tempfile目录可以正常)

1 个答案:

答案 0 :(得分:1)

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

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