の利点の1つは、を定義する任意のタイプからの入力、およびプリミティブタイプからの入力を受け入れることができることstd::stringstream
です。std::istream
operator<<
std::istream
私は使用しませんoperator<<
; 代わりに、多くの文字列を連結します。の実装により、多くの文字列を連結std::stringstream
するよりも高速になりますか?std::string
の利点の1つは、を定義する任意のタイプからの入力、およびプリミティブタイプからの入力を受け入れることができることstd::stringstream
です。std::istream
operator<<
std::istream
私は使用しませんoperator<<
; 代わりに、多くの文字列を連結します。の実装により、多くの文字列を連結std::stringstream
するよりも高速になりますか?std::string
の追加関数がの挿入関数std::string
より遅いと期待する理由はありません。通常、可能なメモリ割り当て/コピーに加えて、メモリへのデータのコピーにすぎません。基本的な呼び出しであっても、ロケールなどを処理する必要があります。stringstream
std::string
stringstream
write
また、std::string
最初のメモリ割り当て以外を最小化または排除する方法も提供します。reserve
十分なスペースがあれば、すべての挿入はmemcpy
. それは実際には不可能stringstream
です。
std::string
の追加関数よりも高速であったとしても、何かを行うには文字列をからコピーする必要があります。stringstream
これは別の割り当て + コピーであり、 では必要ありませんstd::string
。少なくとも C++20 は、その特定の必要性を取り除くように設定されているように見えますが。
いくつかの文字列をくっつけるだけでなく、フォーマットstd::stringstream
が必要な場合に使用する必要があります。