)(詰まりのRDBUFを再定義するために詰まらせ、ログファイルのそれの元RDBUF()にティーであることをどのように?
質問
誰もがofstreamのオブジェクトの元のclog.rdbuf(へティーに加工されている代わりに(新しい関連RDBUFを持つ詰まりに内蔵されたC ++))とRDBUFを再定義する方法の例()を持っていディスク上のログファイルにます。
意図は、それがディスク上のログファイルにだけでなく、デフォルトの詰まり先の両方に行く持っているのstd ::はなく、全体で詰まらコード使用を持つことです。
感謝します。
-William
解決
カスタムstreambufの派生クラスを記述する必要があります。それはあなたのofstreamののRDBUFし、元の詰まりRDBUFの両方ににデータを吐き出す必要があります。
カスタムたstreambufを書くの一般的な例:
http://www.dreamincode.net/code/snippet2499.htmする
次のように新しいストリームバッファを隠しておく行うことができます:
// grab buffer for clog
std::streambuf* oldClogBuf = std::clog.rdbuf();
// create custom buffer which feeds both clog and an ofstream
CustomBuffer* customBuf = new CustomBuffer( oldClogBuf );
// stash custom buffer
std::clog.rdbuf( customBuf );
...do stuff...
// restore original clog buffer
std::clog.rdbuf( oldClogBuf );
あなたは、バッファの切り替えを管理するために、RAIIイディオムを使用することによって、全体のことをより強固にすることができます。
所属していません StackOverflow