Basic_StreamBufに基づいてFiltered_StreamBufを構築するにはどうすればよいですか?
質問
フィルターに従ってフィルターを変更するように、フィルターをストリームに挿入する必要があるプロジェクトがあります。いくつかの調査の後、私がやりたいことは、このようなfiltered_streambufを作成することです。
template <class StreamBuf>
class filtered_streambuf: public StreamBuf
{ ... }
そして、aを挿入します filtered_streambuf<>
どのストリームにフィルタリングする必要があります。私の問題は、それを確実にするために、ストリームのフィルタリング中にどのような不変剤を維持する必要があるかわからないということです。
- 派生クラスは、予想どおりに機能する可能性があります。特に、他のfiltered_streambufs上に構築されたfiltered_streambufsがあることがわかります。
- すべてのさまざまなストリームインター、抽出器、マニピュレーターは、予想どおりに機能します。
問題は、iOSTREAMが正しく機能する必要があるものを持っていることを保証するために、最小限のインターフェイスが提供する必要があるということを解決できないように見えることです。
特に、保護されたポインター変数の動きを偽造する必要がありますか?偽のデータバッファが必要かどうか?パブリック機能をオーバーライドして、ベースストリームバフの観点から書き直すことはできますか、それとも単純すぎますか?
解決
boost.iostreams あなたに役立つかもしれません。
ドキュメントから:
boost.iostreamsには3つの目的があります。
- 新しいソースとシンクにアクセスするために、標準のC ++ストリームとストリームバッファを簡単に作成できるようにします。
- のフレームワークを提供する フィルターの定義 それらを標準のストリームとストリームバッファに取り付けます。
- すぐに使用できるフィルター、ソース、シンクのコレクションを提供します。
私は自分自身をかろうじて使用したので、これ以上コメントすることはできません。
所属していません StackOverflow