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