[英]Difference between + operator and append function for string class object in c++?
我們可以添加兩個字符串類對象
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;
}
此外,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;
}
更多關於附加在這里。
好吧,顯然str1
在兩個操作之間有不同的值(在第一個中,它保持與之前相同,在第二個中它與f
具有相同的值)。
另一個區別是str1 + str2
創建一個臨時字符串(連接的結果),然后應用operator=
。 str1.append()
調用不會創建臨時變量。
例如, operator+
創建一個新字符串,而append
修改以前存在的字符串。 因此,在您的示例中,第二個將修改str1
,而第一個將不會。 append
方法更接近+=
不是+
。
在+運算符的情況下,它將首先占用一個臨時空間,然后復制其中的第一個字符串,然后復制第二個字符串,如在append()中它直接連接第一個字符串后的第二個字符串,所以追加更好的方面表現沒有。 復制操作較少
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.