を使用して多くのファイル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";
}
誰かが知っていますか:
ofstream
?のオープンモードを変更する方法があります。- そうでない場合は、の現在
openmode
が何であるかを確認して、ofstream
必要な場合にのみ閉じて再度開くことができるようにする方法はありますか?