問題タブ [ostringstream]
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::io_base フラグの設定
Streamというカスタムクラスがあります
これは私が実際に持っているものの非常に基本的な例です。そして、次のように std::ios_base フラグを設定しようとしています:
演算子の使用;
std::hex は std::ios_base を返すため、これを呼び出してストリームのフラグを設定する必要があるため、私が理解していることから。ただし、常にテンプレートを呼び出します。注: このテンプレートを削除すると、すべてが期待どおりに機能しますが、両方を持つ方法はありますか?
さらに説明が必要な場合は、お気軽にお問い合わせください
c++ - 明らかなコピーがないコピー コンストラクタ エラー
「<<」インターフェイスのようなストリームを使用して、簡単なロギング機能をゼロから構築しようとしていますが、コンパイラの問題が発生しています。これが私のコードの基本です:
私が得ているエラーは次のとおりです。
これまでに見つけたものから、エラーは ostringstream でコピー コンストラクターを呼び出すことができないためです。私が知る限り、私はコピー コンストラクターを直接呼び出していません。また、Buffer をコピーしておらず、'return' ステートメントで構築しているだけです。
もう 1 つの興味深い点は、このコードは、アプリケーション (GCC 4.6.3 を使用してコンパイルされている) に統合する前にコードをノックアップした Visual Studio 2010 で正常にコンパイルされることです。
問題を正しく解釈しましたか? もしそうなら、暗黙のコピーはどこにあり、どうすればそれを排除できますか?
c++ - ostringstream::write メソッドは入力パラメータを変更します
ostringstream
バイナリ データを取得してオブジェクト に書き込む次のスニペットを考えてみましょう。
問題は、出力された 2 つのハッシュ値が互いに異なっpayload
ていることです。これは、変更されたことを意味します。stream
を使用してバイナリモードで開いてみましstd::ostringstream stream(std::ios::out | std::ios::binary)
たが、違いはありませんでした。とにかく、違いがあるとは思っていませんでした。
もう 1 つの事実は、プログラムを再実行するたびに、2 番目の print ステートメントから異なるチェックサムを取得することです。最初のハッシュは常に同じです。
では、バイナリ データを ostringstream に正しく書き込むにはどうすればよいでしょうか。const char*
問題は(GetData
メソッドがunsigned char**
最初のパラメーターとして取る)へのキャストでしょうか?
更新:コメントに照らして、ここにいくつかの説明があります:
- 元のデータと書き込まれたデータのバイナリ差分を比較すると、書き込まれたデータがいくつかの場所で右にシフトしている (24 バイト) ことがわかりました。また、最初にいくつかのバイトが追加されています。キャストの関係もあると思います。
GetData
と実際の書き込みの間にこれ以上のコードはありません。- GetData は、呼び出し後のチェックサムが正しいため、正しく機能します (チェックサムがどうあるべきかはわかっています)。
- のため、コンパイル可能なコードを投稿できません
GetData
。必要ではありません。問題をwrite
が呼び出された行に切り分けました。 - システムの詳細は次のとおりです。Ubuntu 12.04 64 ビットの gcc バージョン 4.6.3
c++ - ostringstream ブレーク カウント?
ostringstream
a のコンテンツを他のストリーム (たとえば)に出力したいstd::cout
。使用できることはわかっていますstd::ostringstream::str()
が、ストリームの内容を文字列にコピーしてから、さらに他のストリームにコピーする際にオーバーヘッドがあると思います。使用できることがわかりましたstd::ostringstream::rdbuf()
(25票を示唆するコメント)。std::cout
しかし、以下のテスト プログラムの出力に示されているように壊れます。私は何か間違ったことをしていますか?
結果:
c++ - C++ ostringstream で cout の連鎖が使用されている場合の奇妙な動作
私は C++ の初心者です (Java から来ました)。次のコードがあります。
cout< を使用できるように、演算子 const* を再定義しました。
しかし、2番目のブロックをコメントアウトして(演算子const *の2つのバージョンがあり、デフォルトでは2番目のブロックがコメントアウトされています)、プログラムをそのまま実行すると、表示されます
[ (1, 2) -> (1, 2) ]
しかし、2 番目のブロックをコメント解除して実行すると、出力は期待どおりになります。
[ (1, 2) -> (3, 4) ]
この問題は、両方の Point オブジェクトを同じ行に表示すると発生するようです (連鎖のようなものですが、ここで連鎖が正しい言葉であるかどうかはわかりません)。
私の質問は、なぜこれが起こっているのですか?
アップデート
std::ostream& operator << 関数を Line クラスに追加しましたが、次のエラーが表示されます。
よろしく、アウレリアン
c++ - C ++でコピーなしでostringstreamからcharポインターを取得する方法
いくつかのデータを含む ostringstream 変数があります。ostringstream 内のデータへの char * ポインターを設定したいと考えています。
私が次のことをした場合:
ofs には文字列の内容のコピーがあります。コピーなしでそのコンテンツへのポインターを取得したい。
そうする方法はありますか?
c++ - シリアル化中に文字列ストリームの途中に挿入する方法は?
この oa に可変数のコンテンツを追加します。
マトリックス参照 - http://robot.kaist.ac.kr/haptics/chai3d-2.0.0_Doc/resources/html/structc_matrix3d.html
最後に、このアーカイブに追加したマトリックスの数を、udp 送信前にマトリックスの追加を開始する前に挿入したいと思います。しかし、ストリームに追加した後、追加したマトリックスの数も知っています
どうすればいいですか?