c++ - 変換 - stringstream 初期化




stringstreamの代わりにstringをいつ使うべきですか? (2)

string.appendははるかに高速です。 特にあなたが予約したとき。

文字列のみを連結する場合は、string.appendを使用します。 私は自動的に非文字列を文字列に変換する必要があるときにのみstringstreamを使用します:

const int x(42);
stringstream ss;
ss << "My favorite number is: " << x << std::endl;

ここでstringstreamは自動的にxを文字列に変換して付加します。 私はatoiに電話する必要はありません。 Stringstreamはすべての基本タイプを自動的に変換します。 その目的のためには素晴らしいです。

また、後で文字列に変換するためにデータをstringstreamに送ることになる場合だけです。 出力用のostringstreamを使用することができます。

私はそれが助けて欲しい

string::append()代わりにstringstreamを使うべきですか? 私はちょうど弦を束縛しようとしていると仮定します。

stringstream ss;
ss << str1 << "str2" << ...
Write(ss.str());

または:

string str;
str.reserve(10000);
str.append(str1);
str.append("str2");
...
Write(str);

どちらが速いのですか?


どちらが速くなるのかわかりませんが、私が推測しなければならないのは、あなたの2番目の例が、特にreserveメンバー関数を呼び出して拡張のために大きなスペースを割り当てているからです。

string::append連結するだけの場合は、 string::append (またはstring::operator+= )を使用してください。

数字を文字列表現に変換し、変換時にフォーマットし、変換結果を追加する場合は、文字列ストリームを使用してください。 書式設定が必要ない場合は、C ++ 11では数値型を文字列に変換するために使用できるstd::to_stringが用意されているため、書式設定部分を明示的に言及します。







stringstream