問題タブ [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.
c++ - std::streambuf からの継承時の互換性のないデストラクタ コンパイラの警告
デストラクタに互換性がないということから継承すると、ICL コンパイラの警告が表示std::streambuf
されます。ここで何が間違っているのでしょうか? 仮想デストラクタにしても機能しません。
警告 #809: 仮想関数 "CAbcBuffer::~CAbcBuffer" の例外仕様は、オーバーライドされた関数 "std::basic_streambuf<_Elem, _Traits>::~basic_streambuf [with _Elem=char, _Traits=std::char_traits] の例外仕様と互換性がありません。 "
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;
であるため、動作するはずです。なぜ機能しないのですか?
c++ - ifstream を継承しない理由
コメントやその他の不要なデータを自動的に削除するカスタム入力ファイル ストリームを作成したいと考えています。私は次の解決策を思いつきました:
ISerializable
メソッドを含むインターフェースもありますSerialize/Deserialize
。私にはすべてがうまく見えます。
しかし、私は決して継承してはならず、std::ifstream
custom を作成する必要があることを読みましたstd::streambuf
。
なぜ継承するのが悪いのか、コメントやその他のデータを同様に無視std::ifstream
するカスタムを作成するにはどうすればよいか説明していただけますか?std::streambuf
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 は別のことを行います。
それぞれの方法では何が行われますか? 比較してどれくらい速いですか?後でネットワーク クライアント/サーバー アプリケーションで遭遇する可能性があるバッファ オーバーフロー、スレッド化、またはその他のトラップに関して、これらのいずれかがより安全ではないでしょうか?
c++ - コマンド文字列で cin をプリロードする
実行する前にいくつかのコンソール コマンドを必要とする関数をテストしています。特定のメソッドの機能をテストするたびにこれらのコマンドを入力する代わりに、ソースに 1 ~ 2 行のコードを貼り付けるだけで、コマンドを入力するのと同じことを効果的に実行できるようにしたいと考えています。 . 次のコードを試しましたが、無限にループしているようです。
c++ - std::stringstream バッファ操作
stringstream から取得したストリーム buf にデータを入れています
私が望むのは、ダミーデータをこのバッファに入れ、後で正しいデータを取得したら、ダミーデータを置き換えることができるようにすることです。
これらの行の何か:
pubseekpos + sputn を使用してみましたが、期待どおりに動作していないようです。これを行う正しい方法は何ですか?
c++ - streambuf ポインタを返す方法
gzip 圧縮されたファイルで動作するはずの独自の入力 streambuf を作成しました。そのインターフェースは次のとおりです。
ファイルがgzipされていない場合はファイル名を取り、通常のstreambufを返し、そうでない場合はgzstreambufを返す関数を作成しようとしています:
is
ただし、この関数の呼び出し後にオブジェクトが破棄されるため、gzip されていないファイルの場合、この実装は機能しません。
どうすればこれを解決できますか?
c++ - C++ std:stringbufをフラッシュする方法は?
プロセスの標準出力 (バイナリ データ) を文字列バッファーに入れ、それを別のスレッドで使用する必要があります。
プロデューサーは次のとおりです。
消費者は次のとおりです。
コンシューマーは、プロデューサーによって生成されたのすべてのバイトを取得できないことが判明しました。( tByte <> sb->in_avail()
)
内部バッファリングの問題の一種ですか?はいの場合、stringbuf に内部バッファを強制的にフラッシュさせる方法は?