¿Qué sucede si concatenamos dos strings literales en C++?

Si va a realizar una concatenación en C++, algunas de las cosas que debe tener en cuenta son:

  • Si a+b es una expresión que muestra una concatenación de strings, el resultado de la expresión será una copia del carácter en ‘a’ seguido del carácter en ‘b’.
  • Tanto ‘a’ como ‘b’ pueden ser strings literales o un valor de tipo char, pero no ambos. Es por eso que la siguiente concatenación no arroja un error, pero la anterior sí.

Por ejemplo:

Input : "geeks"+"forgeeks"
Output : It will not compile, an error will be thrown.

Caso 1: debido a las razones anteriores, no podemos concatenar la siguiente expresión:

"geeks" + "forgeeks" + geekstring  

Aquí, la asociatividad izquierda de + también juega un papel en la creación del error, ya que + se deja asociativo, por lo que primero «geeks» + «forgeeks» se concatenarán, lo que creará el error como se discutió anteriormente.

Caso 2: Podemos concatenar lo siguiente :

geekstring + "geeks" + "forgeeks" 

Aquí, la asociatividad izquierda no creará el error, ya que se unirá a geekstring y «geeks» por lo que no es un literal, luego se agregarán «forgeeks» y no se generará ningún error.

Input : geekstring = "geeks"
Input : geekstring + "forgeeks"
Output: geeksforgeeks
// Program to illustrate two string
// literal can not be concatenate
#include <iostream>
using namespace std;
int main()
{
    string geekstring = "geeks";
    cout << geekstring + "forgeeks" << endl;
  
    // while this will not work
    // cout<<"geeks" + "forgeeks";
  
    // this will work
    cout << geekstring + "forgeeks" + " Hello";
  
    // but again this will not work
    // cout<<"forgeeks" + "hello" + geekstring;
    return 0;
}

Producción:

geeksforgeeks
geeksforgeeks Hello

Publicación traducida automáticamente

Artículo escrito por UPENDRA BARTWAL, 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 *