Dans son livre "Accelerated C", Koenig introduit le concept d'utilisation de l'opérateur ' " pour concaténer une chaîne littéraux et objets. Bien que cela puisse paraître simple, il existe des nuances subtiles qui peuvent conduire à des résultats inattendus.
Considérez les deux exemples suivants :
<code class="cpp">const string hello = "Hello"; const string message = hello + ",world" + "!";</code>
<code class="cpp">const string exclam = "!"; const string message = "Hello" + ",world" + exclam;</code>
Le premier exemple concatène avec succès les trois chaînes. Cependant, le deuxième exemple échoue.
Pour comprendre l'écart, nous devons considérer l'associativité de l'opérateur " ". L'opérateur « » est associatif de gauche à droite, ce qui signifie qu'il évalue de gauche à droite. Cela peut conduire à un comportement inattendu s'il n'est pas pris en compte.
Dans le deuxième exemple, l'expression peut être mise entre parenthèses comme :
<code class="cpp">const string message = ("Hello" + ",world") + exclam;</code>
Comme vous pouvez le voir, les deux chaînes littérales, " Bonjour" et ", monde" sont concaténés en premier. Il en résulte une chaîne littérale, qui ne peut pas être davantage concaténée avec l'objet chaîne "exclam".
Il existe plusieurs façons de résoudre ce problème :
<code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
<code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
L'opérateur ' ' est conçu pour concaténer des objets de chaîne, pas des littéraux de chaîne. Une chaîne littérale est un tableau de caractères et, lorsqu'elle est utilisée dans une expression, elle est convertie en pointeur vers son élément initial. L'ajout de deux pointeurs, comme dans le cas de la concaténation de littéraux de chaîne, n'est pas autorisé en C .
Bien que vous ne puissiez pas concaténer des littéraux de chaîne à l'aide de l'opérateur ' , vous pouvez combinez-les en les plaçant côte à côte :
<code class="cpp">"Hello" ",world"</code>
Cela équivaut à :
<code class="cpp">"Hello,world"</code>
Ceci est utile pour diviser de longues chaînes littérales sur plusieurs lignes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!