在c ++ stl库的上下文中,执行更好的string :: + =或sstream ::<<还是取决于其他什么?
编辑: 它取决于我们追加的数据大小吗?
答案 0 :(得分:4)
它取决于许多各种参数,主要参数是这些运算符和编译器本身的实现。
在特定版本的编译器中进行简单测试可能是一个天真的观察。例如,只需将短字符串10,000,000次添加到string
或istringstream
并测量时间here即可。它显示+=
比<<
更快。
time (ms):534.02 // For +=
time (ms):927.578 // For <<
在您的实际应用程序中,您应该使用+=
,如果您怀疑它的速度很慢而且会损害您的性能,那么请测试另一个。{1}}。分析是关键字。
答案 1 :(得分:0)
除了字符串+ =推荐之外,我还要补充一点,如果你附加普通字符*并知道它的长度,你应该使用string.append(data *,length)方法,这将节省内部长度计算。 混合C / C ++代码的示例 而不是
char temp[256];
sprintf(temp, <some insane pattern>, <some valuable data>,...);
str += temp;
你应该使用
char temp[256];
const int length = sprintf(temp, <some insane pattern>, <some valuable data>,...);
str.apeend(temp, length);
答案 2 :(得分:-3)
编辑: 建议一般使用string :: + =和sstream ::&lt;&lt;当你知道你的追加字符串是巨大的。