C 11 autorise-t-il les chaînes à terminaison non nulle dans la méthode c_str() ?
En C 11, la définition de c_str( ) pour la classe basic_string a changé. Il est maintenant défini comme étant équivalent à data(), qui à son tour est défini pour renvoyer un pointeur vers le nième élément de la chaîne, où n est compris entre 0 et la taille de la chaîne moins 1.
Cependant , la définition mise à jour de la méthode Operator[], qui sous-tend à la fois c_str() et data(), indique clairement que les chaînes doivent désormais utiliser des tampons terminés par un caractère nul en interne.
Plus précisément, la méthode Operator[] nécessite que la valeur renvoyée soit une référence à un objet de type T avec une valeur de charT(), où T est le type des éléments de la chaîne et charT() est le type du caractère nul. De plus, cette valeur référencée ne peut pas être modifiée.
Étant donné que c_str() et data() doivent tous deux être des opérations O(1), l'implémentation est essentiellement obligée d'utiliser des tampons terminés par un caractère nul. De plus, l'exigence de valeur de retour de la méthode Operator[] signifie également que le caractère nul de fin doit être dans le même tampon que les éléments de la chaîne.
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!