c ++中字符串类对象的+运算符和追加函数之间的区别?

时间:2012-08-11 20:41:53

标签: c++ string

我们可以添加两个字符串类对象,比如说

string str1="hello"
string str2="world"

string final =str1+str2;

string f=str1.append(str2);

这两种方法有什么区别? 他们添加或实施的顺序还是其他什么?

4 个答案:

答案 0 :(得分:7)

operator +将两个字符串组合在一起并生成一个带有该值的新字符串。其中append将接受一个字符串并连接到字符串的末尾。

#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str = "Writing";
  string str2= " a book";
  str.append(str2);                      
  cout << str << endl;  // "Writing a book"
  return 0;
}

此外,append还有更多功能,例如只附加该字符串的一部分

#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str;
  string str2="Writing ";
  string str3="print 10 and then 5 more";

  // used in the same order as described above:
  str.append(str2);                       // "Writing "
  str.append(str3,6,3);                   // "10 "
  str.append("dots are cool",5);          // "dots "
  str.append("here: ");                   // "here: "
  str.append(10,'.');                     // ".........."
  str.append(str3.begin()+8,str3.end());  // " and then 5 more"
  str.append<int>(5,0x2E);                // "....."

  cout << str << endl;
  return 0;
}

此处更多关于append

答案 1 :(得分:2)

嗯,显然str1在两个操作之间有不同的值(在第一个中,它与之前保持一致,在第二个中它与f具有相同的值)。

另一个区别是str1 + str2创建一个临时字符串(连接的结果),然后应用operator=str1.append()调用不会创建临时变量。

答案 2 :(得分:2)

首先,operator+创建一个新字符串,而append修改以前存在的字符串。因此,在您的示例中,第二个将修改str1,而第一个将不会。 append方法更接近+=而不是+

答案 3 :(得分:0)

在+运算符的情况下,它将首先占用一个临时空间,然后复制其中的第一个字符串,然后复制第二个字符串,然后在append()中复制 它在第一个字符串之后直接连接第二个字符串,因此在性能方面,append更好。复制操作少了