3

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

4

1 に答える 1

6

私はこれを使用していませんが、boost のfiltering_streamが役立つ場合があります。

例として、出力をインデントする出力フィルターを実装するindent.hppを含むメーリング リストの投稿を見つけました。

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" 
    ; 

出力は次のようになります。

Hello Filter! 
  this is 
  indented 
until here 
于 2009-05-04T06:36:48.650 に答える