Diferencia entre la concatenación de strings usando (str += s) y (str = str + s)

Una string es una colección de caracteres. Por ejemplo, «GeeksforGeeks» es una string. C++ proporciona tipos de datos primitivos para crear una string. La string también se puede inicializar en el momento de la declaración.

Sintaxis:

string de string;

string str = «GeeksforGeeks»

Aquí, «GeeksforGeeks» es un literal de string.

Este artículo muestra la diferencia entre la concatenación de strings usando el operador de asignación de suma (+=) y el operador de suma (+) usado con strings. La concatenación es el proceso de unión de extremo a extremo.

Operador de asignación de suma (+=)

En C++, se usa un operador de asignación de suma de strings para concatenar una string al final de otra string.

 Sintaxis:

string += valor

Aquí,  el
valor es una string que se concatena con str.

Agrega el valor (literal) al final de la string, sin ninguna reasignación.

Ejemplo: A continuación se muestra el programa C++ para demostrar el operador de asignación de suma.

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>
Producción

GeeksforGeeks

Operador de suma (+)

En C++, se usa un operador de suma de strings para concatenar una string al final de otra string. Pero en este caso, después de la concatenación de strings, la string modificada se asigna a la string.

Sintaxis:

string = string + valor

Aquí, 
el valor es una string que se concatena con str.

Primero agrega el valor (literal) al final de la string y luego lo reasigna a str.

Ejemplo: a continuación se muestra el programa C+ para demostrar el enfoque anterior.

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

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
Producción

GeeksforGeeks

Aunque ambos operadores cuando se usan con strings se pueden usar para la concatenación de strings, existen algunas diferencias entre ellos:

Factor 1: Asignación de la string modificada:

  • El operador de asignación de suma (+=) concatena dos strings agregando una string al final de otra string.
  • El operador de suma (+) concatena dos strings agregando una string al final de la string original y luego asignando la string modificada a la string original.

Ejemplo: a continuación se muestra el programa C++ para demostrar el enfoque anterior.

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;
}
Producción

Resultant string using += GeeksforGeeks
Resultant string using + GeeksforGeeks

Factor 2: funciones sobrecargadas del operador utilizadas:

  • El operador de asignación de suma (+=) concatena dos strings porque el operador está sobrecargado internamente.
  • En este caso, además, el operador de suma (+) concatena dos strings porque el operador está sobrecargado internamente.

Factor 3: Número de strings concatenadas:

  • El operador de asignación de suma (+=) puede concatenar dos strings a la vez en una sola declaración.
  • El operador de suma (+) puede concatenar varias strings mediante el uso de varios operadores de suma (+) entre la string en una sola declaración. Por ejemplo, str = str 1 + str 2 + str 3 + … + str n

Ejemplo: en este programa, se requieren tres declaraciones diferentes para concatenar tres strings; str, str1, str2 y str3 usando el operador de suma de asignación (+=) y se requiere una sola declaración para concatenar tres strings; str, str1, str2 y str3 usando el operador de suma (+). 

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;
}
Producción

Resultant string using +=GeeksforGeeks GeeksforGeeks GeeksforGeeks GeeksforGeeks
Resultant string using + GeeksforGeeks GeeksforGeeks GeeksforGeeks GeeksforGeeks

Factor 4: Rendimiento:

  • El operador de asignación de suma (+=) cuando se usa para la concatenación de strings brinda una mayor eficiencia en comparación con el operador de suma (+). Esto se debe a que en este caso no tiene lugar ninguna reasignación de strings.
  • El operador de suma (+) cuando se usa para la concatenación de strings, es menos eficiente en comparación con el operador de suma (+=). Esto se debe a que la asignación de strings se lleva a cabo en este caso.

Ejemplo: a continuación se muestra el programa para demostrar el rendimiento del método de concatenación de strings +=.

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;
}
Producción

Time taken by program is : 0.000046 sec

Ejemplo: a continuación se muestra el programa para demostrar el rendimiento del método de concatenación de strings +.

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;
}
Producción

Time taken by program is : 0.000034 sec
No. S. Factor += operador  + operador
1  Asignación Agrega una string al final de la string original. Agrega una string al final de la string original y luego reasigna la string modificada a la string original.
2 Funciones sobrecargadas La función sobrecargada del operador utilizada con strings es diferente del operador +=.  La función sobrecargada del operador utilizada con strings es diferente del operador +. 
3 Número de strings concatenadas Puede concatenar dos strings a la vez en una sola declaración. Se pueden concatenar varias strings utilizando varios operadores de suma (+) entre la string. Por ejemplo, str = str1 + str2 + str3 + … + str n
4 Actuación Este operador, cuando se usa para la concatenación de strings, brinda una mayor eficiencia en comparación con el operador de suma (+). Esto se debe a que en este caso no tiene lugar ninguna reasignación de strings. Este operador, cuando se usa para la concatenación, no es tan eficiente en comparación con el operador de suma (+=). Esto se debe a que en este caso tiene lugar la reasignación de strings.

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *