C++中的std::string::append 和 std::string::push_back() 和 +=操作符对比

C++中的std::string::append 和 std::string::push_back() 和 +=操作符对比

要追加字符,可以使用operator +=、append()和push_back()。它们都有助于添加字符,但在实现和应用程序上略有不同。

  • Operator +=:追加单参数值。时间复杂度:O(n)
  • Append():允许你通过使用多个参数来指定附加的值。时间复杂度:O (n)
  • Push_back():允许你一次追加一个字符。时间复杂度:O (1)

C++中的std::string::append 和 std::string::push_back() 和 +=操作符对比

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

完整的字符串

  • +=:我们可以使用+=追加整个字符串。
  • 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("GeeksforGeeks");
 
    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);
 
    return 0;
}

输出:

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

添加String的一部分

  • +=:不允许追加字符串的一部分。
  • 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("GeeksforGeeks ");
    string str2("Hello World! ");
 
    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);
 
    return 0;
}

输出:

Original String : GeeksforGeeks 
Using append() : GeeksforGeeks Hello

添加C-string (char*):

  • +=:允许添加C-string
  • append():它也允许追加C-string
  • push_back:不能使用push_back()追加C-string。

实现:

// 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 += "GeeksforGeeks";
    cout << "Using += : ";
    cout << str << endl;
 
    // Appending using append()
    str1.append("GeeksforGeeks");
    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 GeeksforGeeks
Using append() : World of GeeksforGeeks

追加字符数组

  • +=:允许追加字符数组
  • 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', '\0' };
    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

添加单个字符

  • +=:可以使用+=操作符追加单个字符。
  • 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

迭代器范围

  • +=:不提供迭代器范围。
  • 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("GeeksforGeeks");
 
    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);
 
    return 0;
}

输出:

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

返回值

  • +=:返回*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("GeeksforGeeks");
    string str;
    cout << "Original String : " << str1 << endl;
    str = appendDemo(str1, str2);
    cout << str;
    return 0;
}

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程