内部バッファ管理用のカスタム ストリーム バッファ
問題:
C I/O ストリーム内、pubsetbuf() メソッドは特定の実装では完全には実装されていません。これにより、ストリームの内容を特定のバッファに直接書き込む機能が制限されます。
解決策:
この制限を克服するには、内部を初期化するカスタム ストリーム バッファ クラスを作成します。希望するものをポイントしますbuffer.
template <typename char_type> struct ostreambuf : public std::basic_streambuf<char_type, std::char_traits<char_type>> { ostreambuf(char_type* buffer, std::streamsize bufferLength) { setp(buffer, buffer + bufferLength); } };
アプリケーション:
次のように I/O ストリームでカスタム ストリーム バッファを使用します:
char buffer[1024]; ostreambuf<char> ostreamBuffer(buffer, sizeof(buffer)); std::ostream messageStream(&ostreamBuffer); messageStream << "Hello" << std::endl; messageStream << "World!" << std::endl;
このソリューションにより、ストリームの内容は、不必要なデータコピーのオーバーヘッドを発生させることなく、指定されたバッファーに直接書き込まれます。
以上が直接バッファーに書き込むために C でカスタム ストリーム バッファーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。