問題タブ [streambuf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
551 参照

c++ - C++ 装飾 basic_stream::underflow()

デコレータ パターンを使用して、basic_streambuf オブジェクトの動作を拡張したいと考えています。それが私が現在得ているものです:

基本的な目標 (最初のステップとして) は、各機能を装飾されたオブジェクトに単純に転送することです。したがって、このデコレータは、その基本クラスへのポインタでも使用できるはずです。

メソッドの記述にはこれで問題ありませんが、uflow() と sgetc() から呼び出される underflow() 関数の処理方法がわかりません。

0 投票する
1 に答える
1595 参照

c++ - istream::tellg() は、カスタム streambuf クラスで使用すると -1 を返しますか?

istream生メモリ バッファから直接読み取るを作成しようとしています。

ここの別の投稿でこれを行う良い方法を見つけました:

次に、istreamこれを使用して作成しますmembuf

getline()次に、 and>>演算子の使用を読みましたが、すべてが素晴らしいものでした。seekg()ただし、バッファの先頭に巻き戻すために使用できないようで、istream::tellg()常に を返します-1

これらを機能させるには、さらにコードを書く必要がありますか、それとも失敗する運命にありますか?

0 投票する
2 に答える
298 参照

c++ - basic_streambuf :: seekoff ios_base ::in|のときに返される内容 ios_base :: outが指定されていますか?

27.6.3.4.2バッファの管理と配置

  • basic_streambuf効果:この節(27.8.2.4、27.9.1.5)で派生したクラスごとに個別に定義された方法で、1つ以上の制御されたシーケンス内のストリーム位置を変更します。
  • デフォルトの動作:を返しますpos_type(off_type(-1))

ここまでは順調ですね。basic_streambuf私が使用している派生は、および/またはの位置を個別に変更できios_base::inますios_base::out。しかし、両方が指定されている場合、何を返す必要がありますか?

ios_base::in または を指定するios_base::outと、特定のシーケンスの新しいストリーム位置が返されます。

0 投票する
1 に答える
2203 参照

c++ - データをstd::streambufにシリアル化する

Visual Studio 2008 C ++プロジェクトがあり、複数のクラスからカスタムstd::streambuf実装にデータをシリアル化しようとしています。

シリアル化されたデータクラス:

ストリームバッファの実装は、バッファリングされたi/oとオーバーライドunderflowおよびを提供しますoverflow

私の使用目的は次のようなものです。

しかし、MyStreambuf::overflow呼び出されることはありません。データをバッファに取り込むために何をする必要がありますか?

ありがとう、PaulH

0 投票する
1 に答える
599 参照

c++ - Windows での streambuf による c++ IPC

バイナリ データ ストリーム (任意の std::streambuf を使用できます) としてシリアル化されたメッセージ オブジェクトがあり、それを別のプロセスに転送したいと考えています。重要なのは、サーバー アプリケーションは多くのクライアントを処理する必要があり、接続は非同期である必要があり (複数のクライアントがあるため)、双方向である必要があります (内部では、2 つの別個の接続によって実装される場合があります)。メッセージは可変長であり、キューに入れる必要があります。これにはどの IPC 方法を選択すればよいですか? アプリケーションを介してストリーム バッファを転送する簡単な方法はありますか? 速度は重要ではありませんが、長時間アプリケーションをブロックしないことをお勧めします。Windows (私は XP 以降を目指しています) では、すべてローカルで実行されます。ネットワーク サポートは必要ありません。

また、着信接続をリッスンする可能性も必要です。サーバーは新しい接続を自動的に検出し、互換性がある場合はハンドシェイクを行って受け入れます。私は自分で言及したことの多くを書く必要があることを認識しています. とにかく、それは達成可能でなければなりませんが、もちろん簡単な方が良いです。

0 投票する
2 に答える
300 参照

c++ - basic_streambuf::setbuf で設定するバッファはどれですか?

basic_streambufWinsock ソケットとの間で読み書きを処理する作業を行っています。のようbasic_filebufに、オブジェクトを内部的に使用してstd::codecvt、基になるソケットから読み取ったバイトを「ソケット streambuf」の char 型に変換し、ソケット streambuf に書き込まれた文字を基になるソケットに書き込むことができるバイトに変換します。これを行うには、streambuf の読み取り機能と書き込み機能の両方のバッファーを維持する必要があることがわかりました。

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

0 投票する
3 に答える
6487 参照

c++ - Boost ASIO streambuf から読み取るには?

バイトを削除せずにストリームバッファから読み取る方法はありますか?

メッセージ全体が受信されたかどうかを確認するために、バッファから「メッセージ サイズ」フィールドを読み取っています。

そうでない場合は、それを取得するために別の非同期読み取りを投稿していますが、サイズ フィールドが削除されたため、ハンドラーはメッセージの長さを知る方法がありません。

どんな助けでも大歓迎です!

例えば

0 投票する
1 に答える
1696 参照

c++ - ブースト asio streambuf は、消費を呼び出した後にメモリを解放しませんか?

メソッドが呼び出されたとき、consume占有されていたメモリstreambuf bは解放されません。async_read_until何度も呼び出されるとメモリが増えていきます。私の使い方は正しいですか?the get pointerstreambufの前にメモリを解放する方法はありますか?

0 投票する
2 に答える
6789 参照

c++ - C ++ストリームの混乱:istreambuf_iteratorとistream_iterator?

istreambuf_iteratorとの違いは何istream_iteratorですか?そして、一般的に、ストリームとストリームバフの違いは何ですか?これについての明確な説明が本当に見つからないので、ここで尋ねることにしました。

0 投票する
1 に答える
12745 参照

c++ - ブースト asio 読み取りおよび書き込み用のバッファーとして streambuf を使用する

私はこのコードを読んでいます

これは書き込み用です

ここで、socket_ はソケット、max_length は値 1024 の列挙型、data_ は長さが max_length の char 配列です。

しかし、char配列バッファをstreambufに置き換えたいです。私はもう試した

しかし、機能していません。どうすればできますか?