1


0

C ++でストリームを監視する方法

多くの場合、C ++でファイルライターまたはパーサーを作成するとき、書き込み/読み取りが行われる際のファイル全体のライター/パーサーの進行状況を監視したいと思います。 このため、次のようなものを実装することを考えていました。

ostream_monitor my_monitor(&my_output_stream, &cout);
my_monitor << my_variable;

これは、my_variableをmy_output_streamに出力し、coutにも出力する効果があるため、確認できます。

同様に、同じ入力バージョンを用意しておくと便利です。

istream_monitor my_monitor(&my_input_stream, &cout);
my_monitor >> my_variable;

これは、my_input_streamから次のトークンを読み取り、それを使用してmy_variableを設定しますが、読み取り文字をcoutに出力するため、読み取り中にストリームを確認できます。

先に進んで、これを行うstd

istreamとstd :: ostreamのサブクラスを作成しようとすることもできますが、デバッグツールのエンジニアリングには多くの場合、役に立つかもしれないし、役に立たないかもしれません。 したがって、私は尋ねるよう促されます:

ファイルを介してパーサーの進行状況を監視するにはどうしますか? 上記よりも実装が簡単に見えるソリューションを聞くことに興味があります。

1 Answer


1


boost.IOStreamsのtee_deviceや、場合によってはtee_filterのようなものを使用して、上記の内容をすばやく実装できます。https://stackoverflow.com/questions/1760726/compose-output-streams [出力ストリームを作成するには一度に複数の場所に行きますか?]