0

Boost Tee_device クラスを使用して Text をcoutofstreamの両方に出力しています。このを使用します。唯一の違いは、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 を使用してこのようなことを達成する方法はありますか?

4

0 に答える 0