問題タブ [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.

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

c++ - ostringstream からの文字列のコピーを避ける

インターフェイスを介してデータを入力し、文字列のコピーを避けstd::stringたいという名前があります。 コピーを含むそれを行う1つの方法は、これを行うことです:std::ostream

結果を渡す必要があり、返すoutことができません。この文字列は非常に大きい 可能性がある ため、コピーを避けたいと思います。 ostr.str()
out = ostr.str();

おそらくsを使用して、バッファを直接rdbuf()バインドする方法はありますか?std::ostreamout

明確にするために、呼び出し元が呼び出し前にサイズを知る必要がないように、andの自動拡張動作に興味があります。std::stringstd::ostream

更新out = ostr.str();:無害な行にはおそらく2つのコピーが必要であることに気付きました:

  1. str()通話による最初の
  2. もう 1 つはstd::string代入演算子によるものです。
0 投票する
1 に答える
868 参照

c++ - std::unique_ptr および std::ostringstream での奇妙な動作 (SIGSEGV)

現在、std::ostringstream を std::unique_ptr にラップしようとしています。現在のコードはコンパイルされますが、実行時にセグメンテーション エラーが発生します。

古いCスタイルのポインターを使用してラップしないと、正常に動作します。

より詳細な概要については、curlpp を使用して ostringstream にデータをダウンロードしています。

これは私がやっていることです:

セグメンテーション違反は最後の行で発生します。これはバックトレースです。

参考までに、私のファイルは #14 から #12 までです。上記のコードはファイル #12 の一部です。

さて、これは奇妙です。次のコードを書いているとき、問題なく動作します:

どちらの場合も operator<< へのポインターを渡していますが、私は間違っているようです。

どこが間違っていますか?

ご協力いただきありがとうございます :)

注: シンクとソースのパターンを実装するために unique_ptr を使用したかったのです。

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

c++ - 再帰可変関数を持つ文字列ストリーム?

ostringstream を使用して、複数の異なる引数を 1 つの文字列に結合できるようにしたいと考えています。そうすれば、結果の単一の文字列をランダムな問題なしでログに記録できます。

私はこれまでに得ました:

したがって、std::cout を LogAll 関数で作成した oss に置き換える必要があります。それを引数として他の関数に渡そうとしましたが、「削除された関数」について不平を言っていました...

では、どうすれば再帰的な可変引数関数を取得して、別のパラメーターである ostringstream を受け入れることができるでしょうか?

0 投票する
4 に答える
266 参照

c++ - 任意の長さの文字列に対する C++ の文字列置換

から取得した文字列がありますostringstream。現在、この文字列 ( ) の一部の文字を置き換えようとしていますcontent.replace(content.begin(), content.end(), "\n", "");が、例外が発生することがあります。

文字列が大きすぎるためにこれが発生すると思われます。これらの状況のベストプラクティスは何ですか? ヒープ上で文字列を宣言しますか?

アップデート

私の完全な方法:

0 投票する
6 に答える
6287 参照

c++ - 文字列を std::ostringstream から移動します

を使用して、スペースで区切られた浮動小数点値のリストで構成される文字列を作成するとstd::ostringstream:

次に、結果を次のように取得しますstd::string

ただし、これにより、文字列コンテンツの不要なディープ コピーが作成され、ss使用されなくなります。

コンテンツ全体をコピーせずに文字列を作成する方法はありますか?

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

c++ - std::ostringstream から別の std::ostringstream にリダイレクトします

std::ostringstream一部から別のデータを書き込む必要がありますstd::ostringstream。もちろんstr()機能も使えます

同じことを行うより直接的な方法があるかどうか知りたいです。