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 :

représentation du type widechar ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut représentation du type widechar ?
    Simple question de curiosité ( maintenant que j'ai enfin bien compris la gestion des caracteres avec les différents encodages )

    le type wchar_t que contient-il exactement ? un réprésentation de l'encodage UTF-8 des caracteres ? Ou bien plus simplement une representation unicode standard des carateres ( une valeur hexadecimal sur 2 octets donc ?? ) ?

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Salut,

    Sur ma machine, un caractère de type wchar_t est repésenté sur 4 octets.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    On ne peut pas savoir, c'est à l'implémentation de choisir. Ca ne peut pas être un UTF-8 ni UTF-16, puisque la norme demande à ce que deux wchar_t aient la même taille. Ca peut être de l'UCS-2 ou de l'UCS-4, ou d'autre choses encore.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut
    D'accord je vois.

    Donc une autre question me turlupine du coup. Parce que apres tout j'ai peut etre pas tout si bien compris.

    Pouquoi utiliser les widechars ?
    Je m'explique.

    J'ai testé une la librairie iconv qui permet de convertir simplement n'importe quel encodage vers l'UTF-8, qui contient apparement deja lui-meme les points de code Unicode dans son encodage, et qui fonctionne en multibyte.
    Donc pourquoi ne pas utiliser le multibyte encodé en UTF-8 plutot que les widechar en Unicode, puisque visiblement, ensuite l'affichage ca n'est qu'une question de charset de l'application cliente ..

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Parce que la plupart des opérations de calcul sur chaîne de caractère sont bien plus longues quand elles sont effectuées sur une chaîne multibyte que sur une chaîne où les caractères ont une taille fixe ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    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
    Par défaut
    Pouquoi utiliser les widechars ?
    Ben moi, je les utilise pas.

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Peut être pour réutiliser les types natifs du C++ ?
    En gros tes données externes au programme sont dans un encodage ou un autre. En interne tu utilises des std::wstring (p.ex.) qui te procurent un certain nombre de choses (comparaison, comptages, ...). En interface tu passes par des code-convertion facets qui transforment à la volée.

    Bon, j'avoue, c'est ce que j'ai compris de la théorie.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    C'est nettement plus complexe en pratique (je sais de quoi je parle, crois moi...). Si tu veux utiliser de l'Unicode, utilise la bibliothèque ICU, au moins tu te prendras pas la tête avec des wstring + facets + locale + pétage de câble.

    Sinon, l'intérêt d'un wchar_t, c'est qu'il permet de contenir un caractère Unicode à lui seul (contre 2 char sinon au minimum). Voilà voilà.

Discussions similaires

  1. Création de composant : comment représenter le type de sortie Iterete.
    Par amallek dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 02/06/2014, 12h38
  2. jax-ws et xsd représentant le type de retour
    Par bidts dans le forum Services Web
    Réponses: 0
    Dernier message: 09/04/2009, 01h58
  3. [Type Double] Représentation binaire?
    Par sekiryou dans le forum C++
    Réponses: 4
    Dernier message: 17/04/2008, 18h17
  4. [DC][TopCased] Représenter une collection de type Map
    Par marinew dans le forum Diagrammes de Classes
    Réponses: 9
    Dernier message: 10/02/2008, 21h04
  5. Représentation du type struct en algo
    Par sandytarit dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 12/10/2007, 09h25

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