我们可以添加两个字符串类对象让我们说
string str1="hello"
string str2="world"
string final =str1+str2;
或者
string f=str1.append(str2);
这两种方法有什么区别??他们添加或实施或其他任何东西的顺序?
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;
}
更多关于附加在这里。
好吧,显然str1
这两个操作之间有不同的值(在第一个中,它与以前相同,在第二个中,它与 具有相同的值f
)。
另一个区别是str1 + str2
创建一个临时字符串(连接的结果)然后应用operator=
。该str1.append()
调用不会创建临时变量。
一方面,operator+
创建一个新字符串,同时append
修改一个先前存在的字符串。因此,在您的示例中,第二个将修改str1
,而第一个不会。该方法更append
接近于。+=
+
在 + 运算符的情况下,它将首先占用一个临时空间,然后复制其中的第一个字符串,然后复制第二个字符串,其中与 append() 一样,它直接连接第一个字符串之后的第二个字符串,因此 append 在以下方面更好性能编号 复制操作较少