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

C++ Discussion :

Question à propos d'unicode


Sujet :

C++

  1. #1
    Membre confirmé
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Points : 568
    Points
    568
    Par défaut Question à propos d'unicode
    Salut a tous , j'ai besoin de vous a propos d'unicode.

    J'utilise le compilo vc++ 2008, j'ai défini dans mon projet c++ le jeu de caractères comme étant unicode.

    Mon programme utilise des char * je voudrais donc savoir si le fait que j'ai mis le jeu de caractère en unicode fait que les char * sont gérer en unicode ou si il demeude en ANSI.

    Si char * reste en ansi alors quel type de données utiliser ?

    nb : de l'utf-16 serais le mieux parceque mon programme est en C++/CLI et les chaines .net sont en UTF-16LE

    merci
    Viva la viva... en el chorizo de la corida de leon.... (cette phrase n'a aucun sens je sais )

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Le mode Unicode ne fait que définir la macro _UNICODE je pense.
    Boost ftw

  3. #3
    Membre confirmé
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Points : 568
    Points
    568
    Par défaut
    Merci de ton coup de main loufoque
    J'ai trouvé que std::string = utf-8 et std::wstring = utf-16

    mon application utilise berkleydb et pour récupérer mes données je fait

    data.get_data() qui renvoie un void *

    donc avec des char * je fait : char * donne = (char *)data.get_data();

    j'ai essayé de faire avec std::string

    std::string& donn = (std::string&)data.get_data();

    mais j'ai une erreur
    Viva la viva... en el chorizo de la corida de leon.... (cette phrase n'a aucun sens je sais )

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    J'ai trouvé que std::string = utf-8 et std::wstring = utf-16
    std::string = tableau de caractères de 1 octet.
    std::wstring = tableau de caractères plus grands.

    C'est tout ce que ça veut dire, et ça n'a rien à voir. UTF-8 et UTF-16 sont des encodages, std::string et std::wstring sont des conteneurs de caractères de taille plus ou moins grande.

    Après il est bien entendu possible de mettre de l'UTF-8 dans des std::string, et très certainement de l'UTF-16 dans des std::wstring (un wchar_t peut faire moins de 2 octets mais en pratique je ne pense pas que cela arrive).

    std::string& donn = (std::string&)data.get_data();
    get_data te renvoie toujours la même chose, donc il faut toujours le convertir en la même chose. C'est seulement ensuite qu'il faut construire ton std::string.
    const char* data = static_cast<const char*>(data.get_data());
    std::string donn = data;

  5. #5
    Membre confirmé
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Points : 568
    Points
    568
    Par défaut
    std::string = tableau de caractères de 1 octet.
    std::wstring = tableau de caractères plus grands.

    C'est tout ce que ça veut dire, et ça n'a rien à voir. UTF-8 et UTF-16 sont des encodages, std::string et std::wstring sont des conteneurs de caractères de taille plus ou moins grande.

    Après il est bien entendu possible de mettre de l'UTF-8 dans des std::string, et très certainement de l'UTF-16 dans des std::wstring (un wchar_t peut faire moins de 2 octets mais en pratique je ne pense pas que cela arrive).

    Je me base sur cet article pour dire sa : http://www.codeproject.com/KB/string/UtfConverter.aspx
    Viva la viva... en el chorizo de la corida de leon.... (cette phrase n'a aucun sens je sais )

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Et bien rien que la première phrase confirme ce que j'ai dit :
    I needed to convert between UTF-8 coded std::string and UTF-16 coded std::wstring
    UTF-8 et UTF-16 sont les encodages, et std::string et std::wstring sont les conteneurs.

  7. #7
    Membre confirmé
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Points : 568
    Points
    568
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Et bien rien que la première phrase confirme ce que j'ai dit :

    UTF-8 et UTF-16 sont les encodages, et std::string et std::wstring sont les conteneurs.

    Ok j'avais pas compris sa comme sa . Je vais reprendre sont code
    Viva la viva... en el chorizo de la corida de leon.... (cette phrase n'a aucun sens je sais )

Discussions similaires

  1. Question à propos des compilateurs
    Par elf dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 20/07/2005, 17h00
  2. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  3. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  4. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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