IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Différents types de chaînes de caractères


Sujet :

Visual C++

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut Différents types de chaînes de caractères
    Salut tlm,

    J'aurais aimé savoir comment choisir le meilleur type pour stocker une chaîne de caractères, quels sont les critères de choix parmi la multitude de types existantes (char, char *, string, CString, BSTR, LPSTR, LPWSTR, TCHAR...)?

    Par exemple, pq préfère-t-on utiliser CString que string?

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    CString fait partie des MFC. Donc tu l'utilises dans un programmes utilisant les MFC. Je crois qu'elle possède plus de méthodes que string mais à confirmer.

    char* est plus utilisé en c qu'en c++ et char correspond à un caractère

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    char* est a bannir (tant que faire se peut) en c++
    Il n'y a pas de difference decisive entre CString et std::string, la CString appartient a la MFC, et la std::string a la STL. La pricipale difference entre ces deux libs est la portabilite. La MFC est 100% windows, la STL est multi-plateforme.
    BSTR = equivalent unicode du char*. (necessaire pour developper des ActiveX ou objets COM)
    LPSTR = char* (c'est juste une redefinition)

    Pour les autres, je ne sais pas, mais ce sont des cas particuliers et si un jour tu en as besoin, tu le sauras de suite.

  4. #4
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Points : 138
    Points
    138
    Par défaut
    Salut,
    Pour compléter les réponses, le TCHAR est 100% windows, c'est une surcouche sur les type char *et wchar *, si ton projet est définit en UNICODE, TCHAR est en faite un wchar et sinon c'est un char, très utile pour ne pas avoir à gérer différents types de chaines suivant si ton projet est unicode ou non, à noter que la classe CString a une gestion de l'unicode également et que par conséquent sont buffer interne est de type char * ou wchar *.

    Pour créer un TCHAR à partir d'un texte en dur, il faut utiliser la macro _T(), exemple _T("toto") te créé un TCHAR * contenant "toto".

    Un char est codé sur un octet, utilisé pour des chaines non unicode.
    Un wchar est codé sur 2 octets, utilisé pour des chaines unicode.

    Il est important de noter également que dans l'API de windows tu as des méthode identiques ayant plusieurs prototype, une prenant des char *, une autre des wchar * et une autre des TCHAR *. Il est donc interessant d'utiliser les TCHAR * pour appeler ces méthodes car l'API se débrouillera comme une grande pour appeler ensuite la fonction unicode ou la non unicode, tu n'auras pas à t'en soucier (regarde par exemple la fonction _stat dans le msdn, elle existe en char*, wchar *, la routine prenant un TCHAR * en paramètre s'appelle _tstat).

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Je suis un peu perdue. C'est quoi UNICODE??

    Merci.

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075

Discussions similaires

  1. [OCILIB] Problème de TYPE de chaîne de caractères
    Par mustapha.ezzaouia dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2012, 14h22
  2. Réponses: 28
    Dernier message: 11/10/2006, 22h36
  3. Le type chaîne de caractères
    Par WhiteTigerZ dans le forum Langage
    Réponses: 6
    Dernier message: 27/09/2006, 16h41
  4. Réponses: 6
    Dernier message: 08/08/2006, 09h14
  5. Réponses: 2
    Dernier message: 18/10/2003, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo