在C++中要追加字符,可以使用运算符 +=append()push_back()这几种方法。 所有这些都有助于附加字符,但在实现和应用方面略有不同。

  • 运算符 += :附加单参数值。
  • append() :允许通过使用多个参数来指定附加值。
  • push_back() :允许一次附加单个字符。

以下是我们可以用来比较这三者的几个标准:

(1)、完整字符串:

  • += :可以使用 += 附加完整的字符串。
  • append() :也可以使用 append() 追加完整的字符串。
  • push_back :不允许附加完整的字符串。

示例:

// CPP code for comparison on the
// basis of appending Full String
#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str1, string str2)
{
    string str = str1;

    // Appending using +=
    str1 += str2;
    cout << "Using += : ";
    cout << str1 << endl;

    // Appending using append()
    str.append(str2);
    cout << "Using append() : ";
    cout << str << endl;
}

// Driver code
int main()
{
    string str1("Hello World! ");
    string str2("Yiibai");

    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);

    return 0;
}

运行结果如下:

Original String : Hello World! 
Using += : Hello World! Yiibai
Using append() : Hello World! Yiibai

(2)、附加部分字符串:

  • += :不允许附加字符串的一部分。
  • append() :允许附加字符串的一部分。
  • push_back :不能使用 push_back 附加部分字符串。

示例代码:

// CPP code for comparison on the basis of
// Appending part of string

#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str1, string str2)
{
    // Appends 5 characters from 0th index of
    // str2 to str1
    str1.append(str2, 0, 5);
    cout << "Using append() : ";
    cout << str1;
}

// Driver code
int main()
{
    string str1("Yiibai ");
    string str2("Hello World! ");

    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);

    return 0;
}

运行结果如下:

Original String : Yiibai 
Using append() : Yiibai Hello

(3)、附加 C 字符串 (char*):

  • += :允许附加 C 字符串
  • append() :它还允许附加 C 字符串
  • push_back :不能使用 push_back() 附加 C 字符串。

示例代码:

// CPP code for comparison on the basis of
// Appending C-string

#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str)
{
    string str1 = str;

    // Appending using +=
    str += "Yiibai";
    cout << "Using += : ";
    cout << str << endl;

    // Appending using append()
    str1.append("Yiibai");
    cout << "Using append() : ";
    cout << str1 << endl;
}

// Driver code
int main()
{
    string str("World of ");

    cout << "Original String : " << str << endl;
    appendDemo(str);

    return 0;
}

运行结果如下:

Original String : World of 
Using += : World of Yiibai
Using append() : World of Yiibai

(4)、附加字符数组:

  • += : 允许追加字符数组
  • append() :允许追加字符数组。
  • push_back :不允许追加字符数组。

示例代码:

// CPP code for comparison on the basis of
// Appending character array

#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str)
{
    char ch[6] = { 'G', 'e', 'e', 'k', 's', 'n' };
    string str1 = str;

    // Appending using +=
    str += ch;
    cout << "Using += : " << str << endl;

    // Appending using append()
    str1.append(ch);
    cout << "Using append() : ";
    cout << str1 << endl;
}

// Driver code
int main()
{
    string str("World of ");
    cout << "Original String : " << str << endl;
    appendDemo(str);

    return 0;
}

运行结果如下:

Original String : World of 
Using += : World of Geeks
Using append() : World of Geeks

(5)、附加单个字符:

  • += :可以使用 += 运算符附加单个字符。
  • append() :允许附加单个字符。
  • push_back :允许附加单个字符。

示例

// CPP code for comparison on the basis of
// Appending single character

#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str)
{
    string str1 = str;
    string str2 = str;

    // Appending using +=
    str += 'C';
    cout << "Using += : " << str << endl;
    // Appending using append()
    str2.append("C");
    cout << "Using append() : ";
    cout << str2 << endl;

    // Appending using push_back()
    str1.push_back('C');
    cout << "Using push_back : ";
    cout << str1;
}

// Driver code
int main()
{
    string str("AB");

    cout << "Original String : " << str << endl;
    appendDemo(str);

    return 0;
}

运行结果:

Original String : AB
Using += : ABC
Using append() : ABC
Using push_back : ABC

(6)、迭代器范围:

  • += :不提供迭代器范围。
  • append() :提供迭代器范围。
  • push_back :不提供迭代器范围。

示例代码:

// CPP code for comparison on the basis of
// Appending using iterator range

#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str1, string str2)
{

    // Appends all characters from
    // str2.begin()+5, str2.end() to str1
    str1.append(str2.begin() + 5, str2.end());
    cout << "Using append : ";
    cout << str1;
}
// Driver code
int main()
{
    string str1("Hello World! ");
    string str2("Yiibai");

    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);

    return 0;
}

运行结果如下:

Original String : Hello World! 
Using append : Hello World! Yiibai

(7)、返回值:

  • += : 返回 *this
  • append() : 返回 *this
  • push_back :不返回任何东西。

示例:

// CPP code for comparison on the basis of
// Return value

#include <iostream>
#include <string>
using namespace std;

// Function to demonstrate comparison among
// +=, append(), push_back()
string appendDemo(string str1, string str2)
{
    // Appends str2 in str1
    str1.append(str2); // Similarly with str1 += str2
    cout << "Using append : ";

    // Returns *this
    return str1;
}

// Driver code
int main()
{
    string str1("Hello World! ");
    string str2("Yiibai .com");
    string str;
    cout << "Original String : " << str1 << endl;
    str = appendDemo(str1, str2);
    cout << str;
    return 0;
}

运行结果:

Original String : Hello World! 
Using append : Hello World! Yiibai .com
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:std::string::append、std::string::push_back() 和运算符+=的区别
本文链接:https://www.vsdiffer.com/vs/stdstringappend-vs-stdstringpush_back-vs-operator-c.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。