問題タブ [strstream]
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::strstream が廃止されたのはなぜですか?
std::strstream
私は最近、が推奨されなくなったことを発見しましたstd::stringstream
。使用してからしばらく経ちましたが、当時の私が必要としていたことを実行できたので、非推奨と聞いて驚きました。
私の質問は、なぜこの決定が下されたのかということstd::stringstream
ですstd::strstream
。
visual-c++ - C++ の strstream
私はコードを書いています
問題があります。一時変数に対してはまったく機能しません。結果として、文字列テストのみで結果が得られ、最後に 10 はありませんか?
}
c++ - キャストまたはコピーなしで const unsigned char* から std::istringstream を初期化する方法は?
と で記述されたバイト シーケンスのバイナリ データがconst unsigned char *p
ありsize_t len
ます。を期待する関数にこのデータを渡すことができるようにしたいstd::istream *
.
データをコピーしたり、安全でないキャストを行ったり、新しいストリーム クラスを作成したりせずに、これを行うことができるはずです。しかし、これまでのところ私は失敗しています。誰でも助けることができますか?
アップデート
コメントありがとうございます。これは答えられない質問のように思われます。なぜなら、 と をstd::istream
操作するとchar
、ある時点で少なくとも からの整数キャストが必要になるからunsigned char
です。
実用的なアプローチは、これを行うことです。
&i
そして期待する関数に渡しstd::istream *
ます。
c++ - ostrstreamに関するクエリ
まず第一に、ostrstream は非推奨であり、今後使用すべきではないことをお知らせしたいと思います。
しかし、私の疑問は別のものです。私のアプリケーションのソースコードには、以下のようなコードがあります。
私の興味のあるコード行は最後の行です。この場合、ポインターを削除する必要がありますか?これは私にはかなり厄介に見えます。手動でのメモリ割り当てはありません。正しい方法で考えていますか?
c++ - strstreamのpcountとstringstreamでのフリーズの代わりとなるものは何ですか?
私はstrstreamを使用し、同じのpcountメソッドとfreezeメソッドを使用する古いc++コードを持っています。代わりにstringstreamクラスを使用したいと思います。strstreamのpcountおよびfreezeメソッドの代替は何ですか?コードは次のようなものです。
c++ - ostrstream は定数文字列をポインタとして解釈します
古い C/C++ アプリケーションのデバッグ マクロをクリーンアップしているときに、この問題に遭遇しましたostrstream
。このような:
チェーンの最初の値が上記のような定数文字列の場合ostrstream::str()
、トレーサーを呼び出した結果 (これはデストラクタで実行され、結果をキューに挿入します) には、この文字列へのポインタの 16 進数表現が含まれます。文章。したがって、上記のステートメントは次のような結果になり"0x401a37 message here"
ます。これは古いマクロでは発生しませんでした。これは、削除された最初の値として常に長い (スレッド ID) を持っていたためです。
gdb を使用してステップインすると、最初の挿入でoperator<<(void const*)
は ostrstream が呼び出され、その後の挿入では呼び出しが行われることがわかりましたoperator<< <...>(basic_ostream<...>&, char const*)
(読みやすくするためにテンプレートを削除しました)。
誰かがこの動作を説明できますか? これを修正するためのクリーンな方法は何でしょうか? << left
最初の引数として使用する簡単な回避策を見つけました- これは安全ですか? これを行うためのより良い方法はありますか?
最小化された例を次に示します。
c++ - 文字列ストリーム関連の問題
私は次のことをしようとしています
a & b は構造内に含まれる値であり、この構造はイベントとして他のプロセスに送信され、これらの値が抽出されます。私が遭遇する問題は、私がするときです
6行目以降string string1
は空で、空string
が他のプロセスに渡されます。
stringstream str
異なる値を再利用する方法はありますか?
これが実際のコードです -
}
}
アイデアは、すべての文字列を文字列 appDetails に連結し、構造体メンバー SReadDIDResponse.DIDValue を埋めることです そして、ここに構造体 SReadDIDResponse があります
c++ - std::strstream は eof と peek を適切に実装していませんか?
次のように定義されたバイトデータソースがあります。
dataSize
ゼロではなく、多くの場合非常に大きい (メガバイト)
次のコードが機能します。
stream.eof()
は false で、firstByte は です1
。これは正しいです
次のコードは機能しません。
stream.eof()
は true で、firstByte は です-1
。これは正しくありません
strstream が非推奨であることは知っていますが、この場合、着信データの 2 回の割り当てとコピーを回避できます。これは素晴らしいことです。しかし、peek と eof が機能しないのはなぜですか?
編集: で置き換えるstd::strstream
とstd::istrstream
、これは正常に機能します。実際にはデータから読み取るだけなので、これは問題ありません。しかし、その場合、なぜ std::strstream が機能しないのでしょうか? 私はただ興味があります。
c++ - basic_stringbuf には「freeze」という名前のメンバーがありません
次のコードはコンパイルに失敗します。
コンパイル時に次のエラーが発生します。
Google で検索した後、ostrstream の代わりに ostringstream を使用する必要があると思われるため、プログラムを次のように変更しました。
しかし、今では次のエラーが発生します。
c - Cの同じ文字列にstrstr()を複数回適用する
strstr を使用して と タグの間のすべての単語/文字列を抽出するコードを作成しようとしています。しかし、「速い」抽出された最初の文字列に固執しているようです。最初の文字列を抽出した後、コードを続行するにはどうすればよいですか?