std::string::append vs std::string::push_back() vs Operator += in C++

14 Jul, 2022
To append characters, you can use operator +=, append(), and push_back(). All of them helps to append character but with a little difference in implementation and application.
Operator += : appends single-argument values. Time complexity : O(n)
append() : lets you specify the appended value by using multiple arguments. Time complexity: O(n)
push_back() : lets you to append single character at a time. Time complexity: O(1)
Here are few standards we can have for comparison among these three:
1) Full String: 
+= : We can append full string using +=.
append() : We can also append full string using append().
push_back : doesn’t allow appending of full string.
Implementation:
CPP
// 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 codeint 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
2) Appending part of String: 
+= : Doesn’t allow appending part of string.
append() : Allows appending part of string.
push_back : We can’t append part of string using push_back.
Implementation:
CPP
// 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 codeint 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
3) Appending C-string (char*): 
+= : Allows appending C-string
append() : It also allows appending C-string
push_back : We cannot append C-string using push_back().
Implementation:
CPP
// 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 codeint 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
4) Appending character array: 
+= : Allows appending of character array
append() : Allows appending of character array.
push_back : Does not allow char array appending.
Implementation:
CPP
// 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 codeint 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) Appending single character: 
+= : We can append single character using += operator.
append() : Allows appending single character.
push_back : Allows appending single character.
CPP
// 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 codeint 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) Iterator range: 
+= : Doesn’t provide iterator range.
append() : Provides iterator range.
push_back : Doesn’t provide iterator range.
Implementation:
CPP
// 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 codeint 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
7) Return Value: 
+= : Return *this.
append() : Returns *this
push_back : Doesn’t return anything.
Implementation:
CPP
// 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 codeint 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
This article is contributed by Sakshi Tiwari. If you like GeeksforGeeks(We know you do!) and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
mokshgrover2
rit7011503
surbhikumaridav
cpp-strings-library
STL
C++
Difference Between
Strings
Strings
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.