2009-01-27 7 views
3

Désolé de commencer une autre de ces questions sans réponse sur SO, mais je suis juste curieux de connaître les avantages et les inconvénients de tous les différents types de chaînes en C++. Ma question particulière est entre CStrings de MFC et std :: string (puisque je fais le logiciel de Windows seulement), mais cela s'étendrait à l'un des formats de chaîne en C++. Qu'est-ce que vous pensez du meilleur type de chaîne à utiliser en C++ et pourquoi? MISE À JOUR: J'ai trouvé une question en double. Merci à ceux qui ont déjà répondu. S'il vous plaît diriger toutes les nouvelles réponses à cette autre question: How do you handle strings in C++?Avantages et inconvénients des différents types de chaînes en C++

+0

double possible [Comment gérez-vous les chaînes en C++?] (Http://stackoverflow.com/questions/133364/how-do-you- poignée-cordes-en-c) –

Répondre

5

std :: string

  1. Cela fait partie du TSL
  2. Il est portable.
  3. Utilisé correctement, il peut être aussi efficace que les chaînes c
  4. Il est plus sûr que les chaînes c.
0

La plupart des problèmes avec les types de chaînes C++ proviennent de l'un ou l'autre type de chaîne nécessitant une surcharge de mémoire trop importante. Cela dit, cela peut aussi devenir onéreux si vous devez convertir d'un type de chaîne à un autre. Si vous créez une application volumineuse, je suggère d'avoir une politique sur les chaînes à utiliser.

7

Quand à Rome, faites comme les Romains. Si vous utilisez MFC, utilisez CString car les classes sont toutes optimisées pour cela. Tout le reste, utilisez std :: string, car c'est la norme et vous trouverez l'expérience utile dans d'autres contextes.

1

std :: string peut être manipulé par des algorithmes de chaîne boost en plus de ceux de STL. Pour moi, les bibliothèques de support de std :: string battent bien MFC.

3

Pour résumer ...

std :: string Plus:

  • Portable
  • STL & algorithme Boost soutien
  • plus sûr que CStrings

std :: string Moins:

  • Conversion de CString MFC pourrait être plus lente

CString Avantages:

  • fonctions MFC CString optimisés pour

CString Cons:

  • Non Portable
  • Boost ou non l'algorithme STL soutien
Questions connexes