5

我们可以添加两个字符串类对象让我们说

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

string final =str1+str2;

或者

string f=str1.append(str2);

这两种方法有什么区别??他们添加或实施或其他任何东西的顺序?

4

4 回答 4

8

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;
}

此外,追加具有更多功能,例如仅追加该字符串的一部分

#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;
}

更多关于附加在这里。

于 2012-08-11T20:47:15.180 回答
2

好吧,显然str1这两个操作之间有不同的值(在第一个中,它与以前相同,在第二个中,它与 具有相同的值f)。

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

于 2012-08-11T20:44:57.147 回答
2

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

于 2012-08-11T20:45:14.690 回答
0

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

于 2016-07-30T08:56:36.687 回答