En su libro "Accelerated C", Koenig introduce el concepto de usar el operador '' para concatenar cadenas literales y objetos. Si bien esto puede parecer sencillo, existen matices sutiles que pueden conducir a resultados inesperados.
Considere los siguientes dos ejemplos:
const string hello = "Hello";
const string message = hello ",world" "!";
const string exclam = "!";
const string message = "Hello" ",world" exclam;
El primer ejemplo concatena exitosamente las tres cadenas. Sin embargo, el segundo ejemplo falla.
Para comprender la discrepancia, debemos considerar la asociatividad del operador ''. El operador '' es asociativo de izquierda a derecha, lo que significa que evalúa de izquierda a derecha. Esto puede provocar un comportamiento inesperado si no se tiene en cuenta.
En el segundo ejemplo, la expresión puede estar entre paréntesis como:
const string message = ("Hello" ",world") exclam;
Como puede ver, las dos cadenas literales, "Hola" y "mundo", se concatenan primero. Esto da como resultado un literal de cadena, que no se puede concatenar más con el objeto de cadena "exclam".
Uso de un objeto std::string como uno de los argumentos:
const string message = string("Hello") ",world" exclam;
const string message = "Hello" (",world" exclam);
"Hola" ",mundo"Esto es equivalente a:"Hola, world"
Esto es útil para dividir cadenas literales largas en varias líneas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3