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 :
const string hello = "Hello";
const string message = hello ",world" "!";
const string exclam = "!";
const string message = "Hello" ",world" exclam;
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 :
const string message = ("Hello" ",world") exclam;
Comme vous pouvez le voir, les deux chaînes littérales, "Hello" et ",world", sont concaténées en premier. Cela génère 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 :
const string message = string("Hello") ",world" exclam;
const string message = "Hello" (",world" exclam);
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 :
"Hello" ",world"
Cela équivaut à :
"Hello,world"
Ceci est utile pour diviser de longues chaînes littérales sur plusieurs lignes.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3