85 votes

char* vs std::string en c++

Quand dois-je utiliser std::string et quand dois-je utiliser char* pour gérer des tableaux de char en C++ ?

Il semble que vous devriez utiliser char* si la performance (vitesse) est cruciale et que vous êtes prêt à accepter un certain risque en raison de la gestion de la mémoire.

Y a-t-il d'autres scénarios à envisager ?

1voto

sharptooth Points 93379

Même lorsque la performance est cruciale, il est préférable d'utiliser vector<char> - il permet d'allouer de la mémoire à l'avance (méthode reserve()) et vous aidera à éviter les fuites de mémoire. L'utilisation de vector::operator[] entraîne un surcoût, mais vous pouvez toujours extraire l'adresse du tampon et l'indexer exactement comme s'il s'agissait d'un char*.

-1voto

piotr Points 2826

AFAIK en interne, la plupart des std::string implémentent la sémantique copy on write, reference counted pour éviter l'overhead, même si les strings ne sont pas passés par référence.

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