我经常看到这种结构是否有原因:
std::string myString = someString + "text" + otherString + "more text";
...而不是这个(我很少看到):
std::string myString;
myString += someString += "text" += otherString += "more text";
在阅读std::string
API时,在我看来operator+
会创建许多临时文件(可能是由编译器RVO优化了吗?),而该operator+=
变体仅附加了文本。
在某些情况下,operator+
变体将是必经之路。但是,当您只需要将文本追加到现有的非const字符串时,为什么不使用operator+=
?有没有理由吗?
-Rein
operator+=
与您的第二个示例一样,您编写代码的关联性有误。为此,您需要将其括起来,如下所示:
(((myString += someString) += "text") += otherString) += "more text";
提供给您所需的可读性和效率的替代方法是使用std::stringstream
:
std::stringstream myString;
myString << someString << "text" << otherString << "more text";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句