62 votes

Initialisation des chaînes de caractères en tant que chaînes nulles ou vides

Quelle importance cela a-t-il si mon code C++ (comme indiqué ci-dessous) a une chaîne initialisée comme une chaîne vide :

std::string myStr = "";
....some code to optionally populate 'myStr'...
if (myStr != "") {
    // do something
}

par rapport à une initialisation nulle :

std::string myStr;
....some code to optionally populate 'myStr'...
if (myStr != NULL) {
    // do something
}

Existe-t-il des bonnes pratiques ou des problèmes à cet égard ?

2voto

Jirka Hanika Points 8266

Le constructeur par défaut initialise la chaîne à la chaîne vide. C'est la façon la plus économique de dire la même chose.

Toutefois, la comparaison avec les NULL pue. Il s'agit d'une ancienne syntaxe encore couramment utilisée qui signifie autre chose : un pointeur nul. Cela signifie qu'il n'y a pas de chaîne de caractères.

Si vous souhaitez vérifier si une chaîne (qui existe) est vide, utilisez la fonction empty à la place :

if (myStr.empty()) ...

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