raa*_*and 6 c++ concatenation append stdstring
有没有理由我经常看到这个结构:
std::string myString = someString + "text" + otherString + "more text";
Run Code Online (Sandbox Code Playgroud)
...而不是这个(我很少看到):
std::string myString;
myString += someString += "text" += otherString += "more text";
Run Code Online (Sandbox Code Playgroud)
阅读std::stringAPI,在我看来,operator+创建了很多临时工(可能是由编译器RVO优化?),而operator+=变体只附加文本.
在某些情况下,operator+变体将是要走的路.但是当你只需要将文本附加到现有的非const字符串时,为什么不使用operator+=呢?有什么理由不去?
-Rein
operator+=有一种错误的关联性,你可以像第二个例子那样编写代码.为了做你想做的事,你需要像这样括起来:
(((myString += someString) += "text") += otherString) += "more text";
Run Code Online (Sandbox Code Playgroud)
替代方案,为您提供所需的可读性和效率,是使用std::stringstream:
std::stringstream myString;
myString << someString << "text" << otherString << "more text";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |