Création d'une std::string avec des caractères nuls intégrés
Problème :
Lors de la tentative pour construire un std::string avec une ligne contenant un caractère nul incorporé ( ), tel as :
std::string my_string("a<pre class="brush:php;toolbar:false">#include <iostream> #include <string> int main() { using namespace std::string_literals; std::string s = "pl-<pre class="brush:php;toolbar:false">std::string x("pqrs"); // Two characters because input assumed to be C-String std::string x("pqrs",5); // 5 Characters because input is now a char array with 5 characters.
seul le caractère précédant le caractère nul est conservé. Comment pouvons-nous construire correctement une chaîne avec des caractères nuls intégrés ?
Solution :
Depuis C 14
C 14 a été introduit des littéraux de chaîne, permettant la création directe de std::strings avec des caractères nuls intégrés à l'aide du s suffixe :
Avant C 14
Avant C 14, les constructeurs std::string supposaient que l'entrée était une chaîne de style C, qui se termine par un caractère nul. Pour gérer les caractères nuls incorporés, utilisez le constructeur qui prend un tableau de caractères et une longueur :
Remarque : std::les chaînes ne sont pas intrinsèquement terminées par un caractère nul. Cependant, la méthode c_str() fournit un pointeur vers un tampon interne qui contient une chaîne C avec le terminateur 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!