私はbasic_streambuf
でWinsockソケットの読み取りと書き込みを処理しています。 basic_filebuf
のように、std::codecvt
オブジェクトを内部的に使用して、基礎となるソケットから読み取られたバイトを「ソケットstreambuf」のchar型に変換し、ソケットのstreambufに書き込まれた文字を下位のソケットに書き込むことができるバイトに変換します。これを行うために、私はstreambufの読み書き機能の両方のためにバッファを維持する必要があることを知っています。basic_streambuf :: setbufで設定するバッファはどれですか?
私が遭遇している論理的な問題は、streambufの実装が読み書きの両方に使用されることです(std::iostream
constructorはstreambufへの単一のポインタを取ります)。しかし、オーバーライド可能なメンバ関数は1つしかありません基底のcharバッファーを設定するためにカスタマイズされています:setbuf
。私のソケットのstreambufテンプレートのユーザーが基になるバッファを設定することを許可したい場合は、setbuf
は読み込みバッファまたは書き込みバッファを設定する必要がありますか?どのオプションが理にかなっていますか?両方std::istream
とstd::ostream
が、の両方ものから