2009-05-04 1 views
2

私は入力を2回フィルタリングするために、いくつかのC++ iostreamを「連鎖」することを考えていました。私はzlib圧縮ファイルを読むためにgzstreamsを使用しています。ストリームから読み込んでエンコーディング変換を実行するストリームをコーディングすることを考えていました。おそらく開かれたストリームをコンストラクタパラメータとして渡すことによって、おそらくこれは最も成果が上がると思いますか?チェーンC++ストリーム

+0

「連鎖」とはどういう意味ですか? –

+0

eed3si9nが投稿されたので、boost :: iostreamsフィルタとよく似ています。しかし、以前に開いたストリームをパブリックstd :: streambufから派生したカスタムクラスコンストラクタに渡すか、その他の方法で渡すことで、自分自身でやることが良い設計になるかどうかは疑問でした。 – piotr

答えて

6

私はこれを使用していませんが、ブーストのfiltering_streamが役に立ちます。

boost::iostreams::filtering_ostream out; 
indent_filter::push(out,2); 
out.push(std::cout); 

そしてそうのようにそれを使用します:

out << "Hello Filter!\n" 
    << indent_in 
    << "this is\n" 
    << "indented\n" 
    << indent_out 
    << "until here\n" 
    ; 

どの意志の出力をインデント出力フィルタを実装して、私はindent.hppa mailing list postを発見した例として、

出力結果:

Hello Filter! 
    this is 
    indented 
until here 
関連する問題