c++ - 什么时候应该使用字符串而不是字符串流?

标签 c++ string performance iostream stringstream

我什么时候应该使用 stringstream 而不是 string::append()? 假设我要连接字符串。

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

或者:

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

哪个更快?

最佳答案

我不知道哪个会更快,但如果我不得不猜测我会说你的第二个例子是,特别是因为你调用了 reserve 成员函数来分配一个大扩展空间。

如果您只是连接字符串,请使用 string::append (或 string::operator+= )。

如果您要将数字转换为其字符串表示形式,并在转换期间对其进行格式化,然后将转换结果附加在一起,请使用字符串流。我明确提到了格式化部分,因为如果您不需要格式化 C++11 提供 std::to_string可用于将数字类型转换为字符串。

关于c++ - 什么时候应该使用字符串而不是字符串流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12118899/

相关文章:

c++ - 使用 Xerces C++ 计算/访问 DOMNode 子节点的最快方法

c++ - 有什么方法可以将 varargs 与 boost::format 一起使用吗?

java - 将索引处的字符串数组与字符串进行比较

牛顿与二分法的javascript实现

objective-c - 处理大型运行时生成的瓦片 map 的有效方法?

c# - C#代码与SQL Server 2008存储过程的性能比较

c++ - 保存文件字节最合适的 vector 类型是什么?

c++ - Node Addons 和 v8 GlobalTemplate

java - 在 Java 中拆分字符串以提供所需的输出

c++ - 当我需要一个字符串时,我可以用 unsigned char* 做什么?