Maison > développement back-end > C++ > Comment puis-je créer un `std::string` contenant des caractères nuls intégrés en C ?

Comment puis-je créer un `std::string` contenant des caractères nuls intégrés en C ?

Mary-Kate Olsen
Libérer: 2024-11-29 08:06:10
original
809 Les gens l'ont consulté

How Can I Create a `std::string` Containing Embedded Null Characters in C  ?

Création d'un std::string avec un null intégré : un examen approfondi

Lors de la construction d'un std::string à partir d'un littéral de chaîne contenant un null intégré caractère, tel que "std::string my_string("a\0b");", seul le premier caractère peut être présent dans la chaîne résultante. Pour relever ce défi, diverses approches peuvent être utilisées en fonction de la version C utilisée.

C 14 et versions ultérieures

À partir de C 14, les chaînes littérales ont acquis la capacité de représenter des caractères englobant des valeurs nulles intégrées. . En ajoutant le suffixe « s » à un littéral de chaîne, il peut être traité comme un littéral std::string plutôt que comme un littéral de chaîne C. Par exemple :

std::string s = "pl-<pre class="brush:php;toolbar:false">std::string   x("pq\0rs");   // Two characters because input assumed to be C-String
std::string   x("pq\0rs",5); // 5 Characters as the input is a char array with 5 characters.
Copier après la connexion
-op"s; // Notice the "s" at the end.

Solutions pré-C 14

Avant C 14, le constructeur std::string qui prend un char* suppose que l'entrée est une chaîne C, qui est terminé par un zéro. Pour compenser, il faut utiliser un constructeur différent qui accepte un tableau de caractères et sa longueur :

Il est important de noter que std::string en C n'est pas terminé par un caractère nul, contrairement aux chaînes C. Cependant, la méthode c_str() peut fournir un pointeur vers un tampon interne qui contient une représentation de chaîne C terminée par un caractère nul.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal