我们可以添加两个字符串类对象,比如说
string str1="hello"
string str2="world"
string final =str1+str2;
或
string f=str1.append(str2);
这两种方法有什么区别? 他们添加或实施的顺序还是其他什么?
答案 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更好。复制操作少了