下面的表达式是否会创建另一个 std::string 并将其添加到 s1 中?
它应该防止这种情况吗(它们将被添加到s1而不需要额外的工作)?
这些规则是否也适用于“std :: string + std :: string”表达式?
std::string s1 = "abc", s2 = "xyz";
s1 += s2 + 'b';
它应该防止这种情况吗(它们将被添加到s1而不需要额外的工作)?
std::string s1 = "abc", s2 = "xyz";
s1 += s2;
s1 += 'b';
这些规则是否也适用于“std :: string + std :: string”表达式?
std::string
动态分配其缓冲区。 - Lightness Races in Orbits1 = s2 + 'b';
和s1 += s2; s1 += 'b';
通常不会做相同的事情。只有当s1
最初为空时,它们最终才会产生相同的效果,但如果已知s1
为空,则写s1 += s2;
而不是s1 = s2;
没有意义。 - user743382