Difference between concatenation of strings using (str += s) and (str = str + s)
Last Updated :
10 Feb, 2024
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++
// C++ program to implement
// the above approach
#include <iostream>
using namespace std;
// Driver code
int 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
// Java program to implement
// the above approach
import java.util.*;
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 assignment operator
str += str1;
// Print the String
System.out.print(str);
}
}
// This code is contributed by 29AjayKumar
Python3
# Python code for the above approach
# Driver code
# Declaring an empty string
str = "Geeks";
# String to be concatenated
str1 = "forGeeks";
# Concatenate str and str1
# using addition assignment operator
str += str1;
# Print the string
print(str);
# This code is contributed by gfgking
C#
// C# program to implement
// the above approach
using 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 assignment operator
str += str1;
// Print the String
Console.Write(str);
}
}
// This code is contributed by 29AjayKumar
JavaScript
<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>
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++
// C++ program to implement
// the above approach
#include <iostream>
using namespace std;
// Driver code
int 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
// Java program to implement
// the above approach
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
System.out.print(str);
}
}
// This code is contributed by 29AjayKumar
Python3
# Python program to implement
# the above approach
# Driver code
# Declaring an empty string
str1 = "Geeks"
# String to be concatenated
str2 = "forGeeks"
# Concatenate str and str1
# using addition operator
str1 += str2
# Print the string
print(str1)
# This code is contributed by phasing17
C#
// C# program to implement
// the above approach
using 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
JavaScript
// JavaScript program to implement
// the above approach
// Driver code
function main() {
// Declaring an empty string
let str = "Geeks";
// String to be concatenated
let str1 = "forGeeks";
// Concatenate str and str1
// using addition operator
str = str + str1;
// Print the string
console.log(str);
}
main();
// Contributed by adityashae15
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;
}
Java
public class StringConcatenation {
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 +=
// Concatenate str1 at the end of str
str += str1;
// Print the string
System.out.println("Resultant string using += " + str);
// Reset str to its original value
str = "Geeks";
// Concatenate str and str1 using +
// Concatenate str and str1
// and assign the result to str again
str = str + str1;
// Print the string
System.out.println("Resultant string using + " + str);
}
}
Python3
# Python equivalent of above C++ code
# Declaring an empty string
str = "Geeks"
# String to be concatenated
str1 = "forGeeks"
# Concatenate str and str1
# using addition assignment operator
# Concatenate str1 at the end of str
str += str1
# Print the string
print("Resultant string using += ",str)
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
print("Resultant string using + ",str)
C#
using System;
class Program {
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
// Concatenate str1 at the end of str
str += str1;
// Print the string
Console.WriteLine("Resultant string using += " + str);
// Reset str
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
Console.WriteLine("Resultant string using + " + str);
}
}
JavaScript
// Declaring an empty string
let str = "Geeks";
// String to be concatenated
let str1 = "forGeeks";
// Concatenate str and str1 using +=
// Concatenate str1 at the end of str
str += str1;
// Print the string
console.log("Resultant string using += " + str);
// Reset str to its original value
str = "Geeks";
// Concatenate str and str1 using +
// Concatenate str and str1
// and assign the result to str again
str = str + str1;
// Print the string
console.log("Resultant string using + " + str);
OutputResultant 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 code
int 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;
}
Java
// Java program to implement
// the above approach
import java.io.*;
class GFG {
// Driver code
public static void main (String[] args)
{
// 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
System.out.println("Resultant string using +="
+str);
str = "GeeksforGeeks";
// Concatenate str, str1, str and str3
// using addition operator
// in a single statement
str = str + str1 + str2 + str3;
// Print the string
System.out.print("Resultant string using + "
+ str);
}
}
//this code is contributed by shivanisinghss2110
Python3
# Initialize an empty string
str = "GeeksforGeeks"
# Strings to be concatenated
str1 = " GeeksforGeeks"
str2 = " GeeksforGeeks"
str3 = " GeeksforGeeks"
# Concatenate str, str1, str2, and str3
# using the addition assignment operator
# in multiple statements
str += str1
str += str2
str += str3
# Print the resultant string
print("Resultant string using +=", str)
# Reset the string to the original value
str = "GeeksforGeeks"
# Concatenate str, str1, str2, and str3
# using the addition operator in a single statement
str = str + str1 + str2 + str3
# Print the resultant string
print("Resultant string using +", str)
C#
using System;
class Program
{
static void Main(string[] args)
{
// Declaring an empty string
string str = "GeeksforGeeks";
// Strings to be concatenated
string str1 = " GeeksforGeeks";
string str2 = " GeeksforGeeks";
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
Console.WriteLine("Resultant string using +=" + str);
// Reset the string
str = "GeeksforGeeks";
// Concatenate str, str1, str2, and str3
// using addition operator in a single statement
str = str + str1 + str2 + str3;
// Print the string
Console.WriteLine("Resultant string using + " + str);
}
}
JavaScript
// Declaring an empty string
let str = "GeeksforGeeks";
// String to be concatenated
let str1 = " GeeksforGeeks";
// String to be concatenated
let str2 = " GeeksforGeeks";
// String to be concatenated
let str3 = " GeeksforGeeks";
// Concatenate str, str1, str2, and str3
// using addition assignment operator
// in multiple statements
str += str1;
str += str2;
str += str3;
// Print the string
console.log("Resultant string using +=" + str);
str = "GeeksforGeeks";
// Concatenate str, str1, str2, and str3
// using addition operator
// in a single statement
str = str + str1 + str2 + str3;
// Print the string
console.log("Resultant string using + " + str);
OutputResultant 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 measured
void 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 Code
int 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;
}
Java
import java.util.Date;
public class Main {
// Function whose time is to be measured
static void fun() {
// Initialize an empty string
StringBuilder str = new StringBuilder();
// concatenate the characters from 'a' to 'z'
for (int i = 0; i < 26; i++) {
char c = (char) ('a' + i);
str.append(c);
}
}
// Driver code
public static void main(String[] args) {
// Start timer
long startTime = System.nanoTime();
// Function Call
fun();
// Stop timer
long endTime = System.nanoTime();
// Calculating total time taken by the program
double timeTaken = (endTime - startTime) / 1e9;
System.out.printf("Time taken by program is : %.6f sec%n", timeTaken);
}
}
Python3
import time
# Function whose time is to be measured
def fun():
# Initialize an empty string
str = ""
# Concatenate the characters from 'a' to 'z'
for i in range(26):
c = chr(ord('a') + i)
str += c
# Driver code
if __name__ == "__main__":
# Start timer
startTime = time.time()
# Function Call
fun()
# Stop timer
endTime = time.time()
# Calculating total time taken by the program
timeTaken = endTime - startTime
print(f"Time taken by program is: {timeTaken:.6f} sec")
C#
using System;
using System.Diagnostics;
class Program {
// Function whose time is to be measured
static void Fun()
{
// Initialize an empty string
string str = "";
// Concatenate the characters from 'a' to 'z'
for (int i = 0; i < 26; i++) {
char c = (char)('a' + i);
str += c;
}
}
// Driver Code
static void Main()
{
// Use Stopwatch for measuring time
Stopwatch stopwatch = new Stopwatch();
// Start timer
stopwatch.Start();
// Function Call
Fun();
// Stop timer
stopwatch.Stop();
// Calculating total time taken by the program
double timeTaken = stopwatch.Elapsed.TotalSeconds;
Console.WriteLine(
"Time taken by program is: {0:F6} sec",
timeTaken);
}
}
JavaScript
// Function whose time is to be measured
function fun() {
// Initialize an empty string
let str = '';
// concatenate the characters from 'a' to 'z'
for (let i = 0; i < 26; i++) {
let c = String.fromCharCode('a'.charCodeAt(0) + i);
str += c;
}
}
// Start timer
let startTime = new Date().getTime();
// Function Call
fun();
// Stop timer
let endTime = new Date().getTime();
// Calculating total time taken by the program
let timeTaken = (endTime - startTime) / 1000;
console.log(`Time taken by program is: ${timeTaken.toFixed(6)} sec`);
OutputTime taken by program is : 0.000490 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 measured
void 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 Code
int 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;
}
// this code is contributed by utkarsh
Java
import java.util.*;
public class PerformanceTest {
// Function whose time is to be measured
static void fun() {
// Initialize an empty StringBuilder
StringBuilder str = new StringBuilder();
// Concatenate the characters from 'a' to 'z'
for (int i = 0; i < 26; i++) {
char c = (char)('a' + i);
str.append(c);
}
}
// Driver Code
public static void main(String[] args) {
// Use System.currentTimeMillis() to get the time
long start = System.currentTimeMillis();
// Function Call
fun();
// Stop timer
long end = System.currentTimeMillis();
// Calculating total time taken by the program
double timeTaken = (end - start) / 1000.0;
System.out.printf("Time taken by program is: %.6f sec%n", timeTaken);
}
}
Python3
import time
def fun():
# Initialize an empty string
string = ""
# Concatenate the characters from 'a' to 'z'
for i in range(26):
c = chr(ord('a') + i)
string = string + c
# Driver Code
if __name__ == "__main__":
# Start timer
start_time = time.time()
# Function Call
fun()
# Stop timer
end_time = time.time()
# Calculating total time taken by the program.
time_taken = end_time - start_time
print("Time taken by program is : {:.6f} sec".format(time_taken))
# this code is contributed by utkarsh
C#
// C# program to calculate
// performance of +
using System;
using System.Diagnostics;
class GFG
{
// Function whose time is to
// be measured
static void Fun()
{
// Initialize an empty string
string str = "";
// concatenate the characters
// from 'a' to 'z'
for (int i = 0; i < 26; i++)
{
char c = (char)('a' + i);
str = str + c;
}
}
// Driver Code
static void Main(string[] args)
{
// Use Stopwatch to measure time
Stopwatch stopwatch = new Stopwatch();
// Start timer
stopwatch.Start();
// Function Call
Fun();
// Stop timer
stopwatch.Stop();
// Calculating total time taken
// by the program.
double time_taken = stopwatch.Elapsed.TotalSeconds;
Console.WriteLine("Time taken by program is : " + time_taken.ToString("F6") + " sec");
}
}
JavaScript
function fun() {
// Initialize an empty string
let str = "";
// Concatenate the characters from 'a' to 'z'
for (let i = 0; i < 26; i++) {
let c = String.fromCharCode('a'.charCodeAt(0) + i);
str = str + c;
}
}
// Start timer
console.time("Time taken by program is");
// Function call
fun();
// Stop timer
console.timeEnd("Time taken by program is");
//This code is contributed by Adarsh
OutputTime taken by program is : 0.000715 sec
S No. | Factor | += operator | + operator |
1 | Assignment | It appends a string at the end of the original string. | It appends a string at the end of the original string and then reassigns the modified string to the original string. |
2 | Overloaded functions | operator overloaded function used with strings is different from the += operator. | operator overloaded function used with strings is different from the + operator. |
3 | Number of strings concatenated | It can concatenate two strings at a time in a single statement. | Multiple strings can be concatenated using multiple addition (+) operators between the string. For example, str = str1 + str2 + str3 + ... + strn |
4 | Performance | This 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. | This operator when used for the concatenation is not as efficient as compared to the addition(+=) operator. This is because reassignment of strings takes place in this case. |
Similar Reads
Difference between String and string in C#
String is an alias for System.String class and instead of writing System.String one can use String which is a shorthand for System.String class and is defined in the .NET base class library. The size of the String object in memory is 2GB and this is an immutable object, we can not modify the charact
2 min read
Difference between Relational operator(==) and std::string::compare() in C++
Relational operators vs std::string::compare() Return Value: Relational operators return boolean value, while compare() returns unsigned integer.Parameters : Relational operators need only two strings to perform comparison, one which is being compared and other one is for reference, while compare()
2 min read
Check if a string is concatenation of another given string
Given two strings str1 and str2 of length N and M respectively, the task is to check if the string str1 can be formed by concatenating the string str2 repetitively or not. Examples: Input: str1 = âabcabcabcâ, str2 = âabcâOutput: YesExplanation: Concatenating the string str2 thrice generates the stri
7 min read
Difference between strncmp() and strcmp in C/C++
The basic difference between these two are : strcmp compares both the strings till null-character of either string comes whereas strncmp compares at most num characters of both strings. But if num is equal to the length of either string than strncmp behaves similar to strcmp.Problem with strcmp func
3 min read
What's difference between char s[] and char *s in C?
Consider below two statements in C. What is the difference between the two? char s[] = "geeksquiz"; char *s = "geeksquiz";Below are the key differences: The statements 'char s[] = "geeksquiz"' creates a character array which is like any other array and we can do all array operations. The only specia
2 min read
Difference between concat() and + operator in Java
Strings are defined as an array of characters. The difference between a character array and a string is the string is terminated with a special character â\0â. Since arrays are immutable(cannot grow), Strings are immutable as well. Whenever a change to a String is made, an entirely new String is cre
6 min read
Find resultant string after concatenating uncommon characters of given strings
Given two strings S1 and S2. The task is to concatenate uncommon characters of the S2 to S1 and return the resultant string S1 . Examples: Input: S1 = "aacdb", S2 = "gafd"Output: "cbgf" Input: S1 = "abcs", S2 = "cxzca";Output: "bsxz" Recommended: Please solve it on âPRACTICE â first, before moving o
13 min read
Difference between String and Character array in Java
Unlike C/C++ Character arrays and Strings are two different things in Java. Both Character Arrays and Strings are a collection of characters but are different in terms of properties. Differences between Strings and Character Arrays: PropertyStringCharacter ArrayDefinitionA sequence of characters is
3 min read
Converting one string to other using append and delete last operations
Given an integer k and two strings str1 and str2 determine whether or not we can convert str1 to str2 by performing exactly k of the below operations on str1. Append a lowercase English alphabetic letter to the end of the str1. Delete the last character in str1 (Performing this operation on an empty
7 min read
Check if String can be generated by concatenating character or String itself
Given a target string S consisting of lowercase alphabets, the task is to make this string by performing some operation on an empty string such that: The first operation is to append a lower case alphabet to string S and The second operation is to append a copy of S to itself. Note: The first operat
6 min read