Difference between concatenation of strings using (str += s) and (str = str + s) - GeeksforGeeks

02 Mar, 2022
A string is a collection of characters. For example, “GeeksforGeeks” is a string. C++ provides primitive data types to create a string. The string can also be initialized at the time of declaration.
Syntax:
string str;
string str = “GeeksforGeeks”
Here, “GeeksforGeeks” is a string literal.
This article shows the difference between the concatenation of the strings using the addition assignment operator (+=) and the addition (+) operator used with strings. Concatenation is the process of joining end-to-end.
Addition assignment (+=) operator
In C++, a string addition assignment operator is used to concatenate one string to the end of another string.
 Syntax:
str += value
Here, value is a string to be concatenated with str.
It appends the value (literal) at the end of the string, without any reassignment.
Example: Below is the C++ program to demonstrate the addition assignment operator.
C++
Java
Python3
C#
Javascript
// C++ program to implement// the above approach#include <iostream>using namespace std; // Driver codeint main(){     // Declaring an empty string    string str = "Geeks";     // String to be concatenated    string str1 = "forGeeks";     // Concatenate str and str1    // using addition assignment operator    str += str1;     // Print the string    cout << str;    return 0;}
// Java program to implement// the above approachimport java.util.*;class GFG{ // Driver codepublic static void main(String[] args){     // Declaring an empty String    String str = "Geeks";     // String to be concatenated    String str1 = "forGeeks";     // Concatenate str and str1    // using addition assignment operator    str += str1;     // Print the String    System.out.print(str);}} // This code is contributed by 29AjayKumar
# Python code for the above approach# Driver code # Declaring an empty stringstr = "Geeks"; # String to be concatenatedstr1 = "forGeeks"; # Concatenate str and str1# using addition assignment operatorstr += str1; # Print the stringprint(str); # This code is contributed by gfgking
// C# program to implement// the above approachusing System; public class GFG{ // Driver codepublic static void Main(String[] args){     // Declaring an empty String    String str = "Geeks";     // String to be concatenated    String str1 = "forGeeks";     // Concatenate str and str1    // using addition assignment operator    str += str1;     // Print the String    Console.Write(str);}} // This code is contributed by 29AjayKumar
<script>        // JavaScript code for the above approach        // Driver code         // Declaring an empty string        let str = "Geeks";         // String to be concatenated        let str1 = "forGeeks";         // Concatenate str and str1        // using addition assignment operator        str += str1;         // Print the string        document.write(str);   // This code is contributed by Potta Lokesh    </script>
GeeksforGeeks
Addition(+) operator
In C++, a string addition operator is used to concatenate one string to the end of another string. But in this case the after the concatenation of strings, the modified string gets assigned to the string.
Syntax:
str = str + value
Here, value is a string to be concatenated with str.
It firstly appends the value (literal) at the end of the string and then reassigns it to str.
Example: Below is the C+ program to demonstrate the above approach.
C++
Java
C#
// C++ program to implement// the above approach#include <iostream>using namespace std; // Driver codeint main(){     // Declaring an empty string    string str = "Geeks";     // String to be concatenated    string str1 = "forGeeks";     // Concatenate str and str1    // using addition operator    str = str + str1;     // Print the string    cout << str;    return 0;}
// Java program to implement// the above approach class GFG{ // Driver codepublic static void main(String[] args){     // Declaring an empty String    String str = "Geeks";     // String to be concatenated    String str1 = "forGeeks";     // Concatenate str and str1    // using addition operator    str = str + str1;     // Print the String    System.out.print(str);}} // This code is contributed by 29AjayKumar
// C# program to implement// the above approachusing System;public class GFG {   // Driver code  public static void Main(String[] args) {     // Declaring an empty String    String str = "Geeks";     // String to be concatenated    String str1 = "forGeeks";     // Concatenate str and str1    // using addition operator    str = str + str1;     // Print the String    Console.Write(str);  }} // This code is contributed by umadevi9616
GeeksforGeeks
Although both operators when used with strings can be used for the concatenation of strings, there are some differences between them:
Factor 1: Assignment of the modified string:
The addition assignment operator (+=) concatenates two strings by appending one string at the end of another string.
The addition operator(+) concatenates two strings by appending one string at the end of the original string and then assigning the modified string to the original string.
Example: Below is the C++ program to demonstrate the above approach.
C++
#include <iostream>using namespace std; int main(){     // Declaring an empty string    string str = "Geeks";     // String to be concatenated    string str1 = "forGeeks";     // Concatenate str and str1    // using addition assignment operator    // Concatenate str1 at the end of str    str += str1;     // Print the string    cout << "Resultant string using += "         << str << '\n';     str = "Geeks";     // Concatenate str and str1    // using addition operator    // Concatenate str and str1    // and assign the result to str again    str = str + str1;     // Print the string    cout << "Resultant string using + "         << str;    return 0;}
Resultant string using += GeeksforGeeks
Resultant string using + GeeksforGeeks
Factor 2: Operator overloaded functions used:
The addition assignment operator (+=) concatenates two strings because the operator is overloaded internally.
In this case, also, the addition operator (+) concatenates two strings because the operator is overloaded internally.
Factor 3: Number of strings concatenated:
The addition assignment operator (+=) can concatenate two strings at a time in a single statement.
The addition operator (+) can concatenate multiple strings by using multiple addition (+) operators between the string in a single statement. For example, str = str1 + str2 + str3 + ... + strn
Example: In this program, three different statements are required to concatenate three strings; str, str1, str2, and str3 using the assignment addition operator (+=) and a single statement is required to concatenate three strings; str, str1, str2, and str3 using the addition operator (+). 
C++
// C++ program to implement// the above approach#include <iostream>using namespace std; // Driver codeint main(){     // Declaring an empty string    string str = "GeeksforGeeks";     // String to be concatenated    string str1 = " GeeksforGeeks";     // String to be concatenated    string str2 = " GeeksforGeeks";     // String to be concatenated    string str3 = " GeeksforGeeks";     // Concatenate str, str1, str2 and str3    // using addition assignment operator    // in multiple statements    str += str1;     str += str2;     str += str3;     // Print the string    cout << "Resultant string using +="         << str << '\n';     str = "GeeksforGeeks";     // Concatenate str, str1, str and str3    // using addition operator    // in a single statement    str = str + str1 + str2 + str3;     // Print the string    cout << "Resultant string using + "         << str;    return 0;}
Resultant string using +=GeeksforGeeks GeeksforGeeks GeeksforGeeks GeeksforGeeks
Resultant string using + GeeksforGeeks GeeksforGeeks GeeksforGeeks GeeksforGeeks
Factor 4: Performance:
The addition assignment operator (+=) when used for the concatenation of strings gives better efficiency as compared to the addition(+) operator. This is because no reassignment of strings takes place in this case.
The addition operator (+)  when used for the concatenation of strings, is less efficient as compared to the addition (+=) operator. This is because the assignment of strings takes place in this case.
Example: Below is the program to demonstrate the performance of the += string concatenation method.
C++
// C++ program to calculate// performance of +=#include <bits/stdc++.h>#include <sys/time.h>using namespace std; // Function whose time is to// be measuredvoid fun(){    // Initialize a n empty string    string str = "";     // concatenate the characters    // from 'a' to 'z'    for (int i = 0; i < 26; i++) {        char c = 'a' + i;        str += c;    }} // Driver Codeint main(){    // Use function gettimeofday()    // can get the time    struct timeval start, end;     // Start timer    gettimeofday(&start, NULL);     // unsync the I/O of C and C++.    ios_base::sync_with_stdio(false);     // Function Call    fun();     // Stop timer    gettimeofday(&end, NULL);     // Calculating total time taken    // by the program.    double time_taken;     time_taken = (end.tv_sec                  - start.tv_sec)                 * 1e6;     time_taken = (time_taken                  + (end.tv_usec                     - start.tv_usec))                 * 1e-6;     cout << "Time taken by program is : "         << fixed         << time_taken << setprecision(6);    cout << " sec" << endl;    return 0;}
Time taken by program is : 0.000046 sec
Example: Below is the program to demonstrate the performance of the + string concatenation method.
C++
// C++ program to calculate// performance of +#include <bits/stdc++.h>#include <sys/time.h>using namespace std; // Function whose time is to// be measuredvoid fun(){    // Initialize a n empty string    string str = "";     // concatenate the characters    // from 'a' to 'z'    for (int i = 0; i < 26; i++) {         char c = 'a' + i;        str = str + c;    }} // Driver Codeint main(){    // Use function gettimeofday()    // can get the time    struct timeval start, end;     // Start timer    gettimeofday(&start, NULL);     // unsync the I/O of C and C++.    ios_base::sync_with_stdio(false);     // Function Call    fun();     // Stop timer    gettimeofday(&end, NULL);     // Calculating total time taken    // by the program.    double time_taken;     time_taken = (end.tv_sec                  - start.tv_sec)                 * 1e6;     time_taken = (time_taken                  + (end.tv_usec                     - start.tv_usec))                 * 1e-6;     cout << "Time taken by program is : "         << fixed         << time_taken << setprecision(6);    cout << " sec" << endl;    return 0;}
Time taken by program is : 0.000034 sec
lokeshpotta20
varshagumber28
gfgking
29AjayKumar
umadevi9616
C++
Difference Between
Strings
Strings
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Operator Overloading in C++
Polymorphism in C++
Friend class and function in C++
Sorting a vector in C++
Iterators in C++ STL
Difference between BFS and DFS
Class method vs Static method in Python
Differences between TCP and UDP
Difference between var, let and const keywords in JavaScript
Differences between Black Box Testing vs White Box Testing