c_str() vs data() dans les implémentations de chaînes standard
La distinction entre les fonctions c_str() et data() dans STL et Il est largement admis que des implémentations similaires sont basées sur une terminaison nulle. Apparemment, c_str() fournit toujours une chaîne terminée par un caractère nul, contrairement à data().
Cependant, dans la pratique, les implémentations effondrent souvent cette distinction en obligeant data() à appeler c_str() en interne. Cela peut prêter à perplexité quant à la différence réelle entre les deux fonctions.
Utilisation correcte et scénarios
La documentation indique avec insistance que c_str() doit être utilisé lorsqu'une valeur nulle Une chaîne terminée par - est requise. Si une chaîne non terminée par un caractère nul est acceptable, data() peut être utilisée, car elle peut offrir de meilleures performances dans des implémentations spécifiques.
Au-delà des chaînes basées sur des caractères
Il est crucial de noter que les chaînes en C ne se limitent pas aux données de caractères. Ils peuvent contenir des éléments de tout type. Dans de tels cas, data() devient plus significatif car il accède directement aux données sous-jacentes, tandis que c_str() est moins pertinent en raison de l'accent mis sur les chaînes basées sur des caractères.
C 11 et au-delà : Convergence
Dans C 11 et les versions ultérieures de la norme, data() doit désormais se terminer par un caractère nul, alignant son comportement sur celui de c_str(). Cela élimine la distinction précédente entre les deux fonctions, garantissant qu'elles effectuent la même opération.
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