我知道它的优点之一std::stringstream
是std::istream
它可以接受来自定义operator<<
to的任何类型的输入,也可以接受std::istream
来自原始类型的输入。
我不会使用operator<<
; 相反,我只是要连接许多字符串。的实现是否std::stringstream
比std::string
连接许多字符串更快?
我知道它的优点之一std::stringstream
是std::istream
它可以接受来自定义operator<<
to的任何类型的输入,也可以接受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
如果您需要格式化,您应该使用,而不仅仅是将一些字符串粘在一起。