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 :
string str = "ab" 'c';
cout 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 :
std::string str = std::string("ab") 'c';
Vous pouvez également utiliser la concaténation pour obtenir le résultat souhaité :
std::string str = "ab";
str = 'c';
Dans le deuxième extrait de code, l'objet chaîne a un opérateur " " surchargé qui effectue la concaténation prévue.
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