我正在编写一个有时必须清理的C ++ ofstream - 我应该删除我写的文件并删除并清理该类。
如何? (除非关闭它并按名称删除它)。
(至少文件不应该与打开它的目标位置和文件名一起存在 - tempfile目录可以正常)
答案 0 :(得分:1)
据我所知,没有其他办法。关闭文件并使用
remove
及其名称。
这可能是某种RAII类最好的处理方式;
我经常使用OutputFile
类,它隐式转换
到std::ostream&
(输出)。构造函数采用名称
一个文件;有一个commit
函数关闭文件,
但如果在commit
之前调用析构函数,则不仅如此
关闭文件,但删除它。同样,有一个
UpdateFile
类,打开
filename.new
- commit
然后重命名
filename
到filename.bak
(删除任何以前存在的具有该名称的文件),和
将filename.new
移至
filename
。析构函数删除了
filename.new
。 (一个变体检查是否
新内容与commit
中的旧内容不同,因此
如果内容没有变化,文件时间戳不会改变。)