std::stringstream
の利点の1つは、それが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
から文字列をコピーして何かを行うにはhaveです。つまり、これは別の割り当て+コピーであり、std::string
では必要ありません。少なくともC++ 20は、その特定のニーズを取り除くように設定されているように見えますが。
いくつかの文字列をくっつけるだけでなく、必要に応じてstd::stringstream
を使用する必要がありますformatting。