Boost Tee_device クラスを使用して Text をcoutとofstreamの両方に出力しています。この例を使用します。唯一の違いは、TeeDevice の typedef が次のようになっていることです。
typedef io::tee_device<ostream, ofstream> TeeDevice;
typedef io::stream< TeeDevice > TeeStream;
その部分はうまく機能します。
私の問題は、ストリーム オブジェクトを使用してプログレス バーを書き込もうとしたときに発生します。'\r'
コーサーをラインの先頭に戻すために使用しています。
私が使用しているコードは次のようになります。
//Some code that inits TeeStream* Tee_streamObj;
(*Tee_streamObj) << "Progress:"<< "\n" <<std::flush();
for(int x = 0; x <= 100; x++)
{
(*Tee_streamObj) << '\r' << (x*100)/100<<"%"<<std::flush();
}
(*Tee_streamObj) << '\r' << "Complete!"<<std::flush();
cout では 2 行が表示され、2 行目は上書きされ続け、最終的にはこのようになります。
進行状況:
完了! //<-- 行は必要に応じて上書きされ続けます
しかし、ofstream から生成されたファイルは次のようになります。
進捗:
0%
1%
2%...
99%
100%
コンプリート!
ブースト Tee_device クラスの ofstream に書き込まれた最後の行を上書きする方法はありますか?
私はブースト ライブラリのバージョン 1.40 を使用していますが、別のバージョンの使用を制御できないことに注意してください。
アイデア?
事前に感謝します。
編集:ofstreamをfstreamにすることで遊んでいます。seekg または tellg を使用してこのようなことを達成する方法はありますか?