Avantages et disadvantatges:
const std::string mystring = "blah";
C'est à peu près la manière standard C++ pour traiter avec des chaînes. Vous pouvez faire tout ce que vous pourriez avoir à faire avec une chaîne avec ceci. Le principal inconvénient est qu'il est plus lent. Il y a une allocation dynamique là-dedans. En outre, si .find
repose sur char[]
sous les scènes, vous perdez tout ce tas de travail, et il peut même avoir à faire plus pour obtenir la matrice c-utilisable en interne.
const char mystring[] = "blah";
Cette chaîne alloue votre 5 octets sur la pile, il est donc agréable et rapide. L'inconvénient est que si .find
utilise std :: string, il va devoir faire cette allocation de toute façon, et il le fera tous les appels au lieu d'une seule fois ici. De plus, si vous deviez faire autre chose avec lui (par exemple: catenate ".txt"), cela aurait été beaucoup plus facile avec une chaîne std :: string.
static const char * mystring = "blah";
Si tel est portée externe, cela signifie qu'il reste local à votre fichier source. La méthode C++ pour ce faire est avec des espaces de noms sans nom au lieu de static
cependant. Le seul avantage de le faire de cette façon est qu'il est compatible avec C (ou du moins avec de nouveaux compilateurs qui savent ce que "const" est).
En général, j'irais avec std :: string. Sauf dans des cas spéciaux ou extrêmes, la facilité d'utilisation l'emporte sur la vitesse.
Comment déclarez-vous votre carte? – Bill
Tout va bien, sauf que j'irais avec le premier: 'const std :: string mystring =" blah ";'. C'est un choix subjectif. – AraK