在一些使用 执行大量文件 i/o 的代码中std::ofstream
,我正在缓存流以提高效率。但是,有时我需要更改文件的打开模式(例如追加与截断)。这是一些类似的模拟代码:
class Logger {
public:
void write(const std::string& str, std::ios_base::openmode mode) {
if (!myStream.is_open) myStream.open(path.c_str(), mode);
/* Want: if (myStream.mode != mode) {
myStream.close();
myStream.open(path.c_str(), mode);
}
*/
myStream << str;
}
private:
std::ofstream myStream;
std::string path = "/foo/bar/baz";
}
有谁知道:
- 有没有办法改变openmode的
ofstream
? - 如果没有,有没有办法找出当前
openmode
的 anofstream
是什么,以便我可以仅在必要时关闭并重新打开它?