Lors de la tentative de concaténation de littéraux de chaîne avec des littéraux de caractères en C , un comportement inattendu peut se produire. Par exemple :
<code class="cpp">string str = "ab" + 'c'; cout << str << endl;</code>
Ce code produit une sortie imprévisible car l'opérateur " " n'est pas défini pour combiner les littéraux de chaîne et les littéraux de caractères. Au lieu de cela, le compilateur traite la chaîne littérale comme une chaîne de style C (un pointeur de caractère const) et ajoute la valeur int promue du littéral de caractère à l'adresse de la chaîne littérale. Cela entraîne un comportement indéfini.
Pour éviter ce problème, convertissez explicitement le caractère littéral en chaîne avant la concaténation :
<code class="cpp">std::string str = std::string("ab") + 'c';</code>
Vous pouvez également utiliser la concaténation pour obtenir le résultat souhaité :
<code class="cpp">std::string str = "ab"; str += 'c';</code>
Dans le deuxième extrait de code, l'objet chaîne a un opérateur " " surchargé qui effectue la concaténation prévue.
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!