簡體   English   中英

c ++中字符串類對象的+運算符和追加函數之間的區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM