5

2 つの文字列クラス オブジェクトを追加できます。

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

string final =str1+str2;

また

string f=str1.append(str2);

これら2つの方法の違いは何ですか?? 追加する順序または実装またはその他??

4

4 に答える 4

8

operator+ は、2 つの文字列を一緒に追加し、値を持つ新しい文字列を生成します。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、2 つの操作間で値が異なります (最初の操作では以前と同じままで、2 番目の操作では と同じ値になりますf)。

もう 1 つの違いはstr1 + str2、一時的な文字列 (連結の結果) を作成してから適用することoperator=です。このstr1.append()呼び出しでは、一時変数は作成されません。

于 2012-08-11T20:44:57.147 に答える
2

1 つoperator+は、新しい文字列を作成する一方で、append既存の文字列を変更します。したがって、あなたの例では、2番目のものは変更さstr1れ、最初のものは変更されません。appendメソッドは よりも+=に近い+です。

于 2012-08-11T20:45:14.690 に答える
0

+ 演算子の場合、最初に一時スペースを取り、その中に最初の文字列をコピーしてから、2 番目の文字列をコピーします。append() のように、最初の string の後に 2 番目の文字列を直接連結するため、append は次の点で優れています。パフォーマンスNo. のコピー操作が少ない

于 2016-07-30T08:56:36.687 に答える