53 votes

Std :: string sera-t-il toujours terminé par NULL en C ++11?

En 2008 dans une publication sur son site, Herb Sutter est la suivante:

Il y a un actif proposition visant à renforcer cette plus loin dans C++0x et nécessitent null-résiliation et, éventuellement, l'interdiction de copie sur écriture mises en œuvre, à la simultanéité des raisons. Voici le document: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html . Je pense qu'une ou deux propositions dans ce document est susceptible d'être adopté, mais nous allons voir lors de la prochaine réunion ou deux.

Je sais que C++11 assure aujourd'hui que le std::string contenus stockés de manière contiguë, mais ont-ils adopté le ci-dessus dans la version finale du projet?

Il va maintenant être sûr d'utiliser quelque chose comme &str[0]?

58voto

James McNellis Points 193607

Oui. Selon le C ++ 0x FDIS 21.4.7.1/1,% std::basic_string::c_str() doit renvoyer

un pointeur p tel que p + i == &operator[](i) pour chaque i en [0,size()] .

Cela signifie que pour une chaîne s , le pointeur renvoyé par s.c_str() doit être identique à l'adresse du caractère initial de la chaîne ( &s[0] ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X