問題タブ [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 投票する
1 に答える
640 参照

c++ - std::streambuf からの継承時の互換性のないデストラクタ コンパイラの警告

デストラクタに互換性がないということから継承すると、ICL コンパイラの警告が表示std::streambufされます。ここで何が間違っているのでしょうか? 仮想デストラクタにしても機能しません。

警告 #809: 仮想関数 "CAbcBuffer::~CAbcBuffer" の例外仕様は、オーバーライドされた関数 "std::basic_streambuf<_Elem, _Traits>::~basic_streambuf [with _Elem=char, _Traits=std::char_traits] の例外仕様と互換性がありません。 "

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

c++ - ostringstream rdbuf を変更することは可能ですか?

次のコードを試します。

しかし、残念ながら私はこのエラーが発生します:

ただし、rdbuf には 2 つのオーバーロードがあります。

get (1) basic_streambuf<char_type,traits_type>* rdbuf() const;

set (2) basic_streambuf<char_type,traits_type>* rdbuf (basic_streambuf<char_type,traits_type>* sb);

はい、私はそれが言うことを知っていますbasic_streambufが、実際には単なる typedeftypedef basic_streambuf<char> streambuf;であるため、動作するはずです。なぜ機能しないのですか?

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

c++ - ifstream を継承しない理由

コメントやその他の不要なデータを自動的に削除するカスタム入力ファイル ストリームを作成したいと考えています。私は次の解決策を思いつきました:

ISerializableメソッドを含むインターフェースもありますSerialize/Deserialize。私にはすべてがうまく見えます。

しかし、私は決して継承してはならず、std::ifstreamcustom を作成する必要があることを読みましたstd::streambuf

なぜ継承するのが悪いのか、コメントやその他のデータを同様に無視std::ifstreamするカスタムを作成するにはどうすればよいか説明していただけますか?std::streambuf

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

c++ - buffer_cast vs std::string vs ostringstream で streambuf を const char* にブースト

boost::streambuf で boost::read_until を使用するクライアント/サーバー アプリケーションがあります。私はソケットから XML メッセージを読んでいて、これを tinyXML2 で次のように解析したいと考えています。

どうにかしてストリームバッファから const char *strPtr を抽出する必要があります。これまでのところ、スタック交換で 3 つの方法を見つけました。

3 つの方法はすべて、私のコードで機能します (これまでのところ)。方法 1 と 2 はおそらくデータを少なくとも 1 回 (またはそれ以上) コピーしますが、方法 3 は別のことを行います。

それぞれの方法では何が行われますか? 比較してどれくらい速いですか?後でネットワーク クライアント/サーバー アプリケーションで遭遇する可能性があるバッファ オーバーフロー、スレッド化、またはその他のトラップに関して、これらのいずれかがより安全ではないでしょうか?

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

c++ - コマンド文字列で cin をプリロードする

実行する前にいくつかのコンソール コマンドを必要とする関数をテストしています。特定のメソッドの機能をテストするたびにこれらのコマンドを入力する代わりに、ソースに 1 ~ 2 行のコードを貼り付けるだけで、コマンドを入力するのと同じことを効果的に実行できるようにしたいと考えています。 . 次のコードを試しましたが、無限にループしているようです。

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

c++ - std::stringstream バッファ操作

stringstream から取得したストリーム buf にデータを入れています

私が望むのは、ダミーデータをこのバッファに入れ、後で正しいデータを取得したら、ダミーデータを置き換えることができるようにすることです。

これらの行の何か:

pubseekpos + sputn を使用してみましたが、期待どおりに動作していないようです。これを行う正しい方法は何ですか?

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

c++ - streambuf ポインタを返す方法

gzip 圧縮されたファイルで動作するはずの独自の入力 streambuf を作成しました。そのインターフェースは次のとおりです。

ファイルがgzipされていない場合はファイル名を取り、通常のstreambufを返し、そうでない場合はgzstreambufを返す関数を作成しようとしています:

isただし、この関数の呼び出し後にオブジェクトが破棄されるため、gzip されていないファイルの場合、この実装は機能しません。

どうすればこれを解決できますか?

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

c++ - C++ std:stringbufをフラッシュする方法は?

プロセスの標準出力 (バイナリ データ) を文字列バッファーに入れ、それを別のスレッドで使用する必要があります。

プロデューサーは次のとおりです。

消費者は次のとおりです。

コンシューマーは、プロデューサーによって生成されたのすべてのバイトを取得できないことが判明しました。( tByte <> sb->in_avail())

内部バッファリングの問題の一種ですか?はいの場合、stringbuf に内部バッファを強制的にフラッシュさせる方法は?