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 :

Affichage caractères unicodes dans la console


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Par défaut Affichage caractères unicodes dans la console
    Salut, je cherche à afficher trois caractères dans ma console: '˄', '˅', et '¬', donc des opérateurs mathématiques. Pour '¬', il me suffit de faire un char (0x170) dans mes cout, car ce caractère est présent dans le code ascii. Mais comment puis-je faire pour les deux autres??? Le code ascii correspondant d'apres le standard unicode est respectivement 0x2227 et 0x2228, mais ces valeurs ne sont pas compries telles quelles.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sous Windows, tu peux essayer WriteConsoleW() ou CharToOem().

    Sinon, sous (normalement) tous les OS, tu peux essayer putwc(0x2227)

    PS: ASCII <==> 0 < code < 128
    Ce n'est donc pas "le code ascii", mais des codes Unicode.
    Edit: d'ailleurs, je me demande pourquoi le premier marche s'il est en 0x170. Es-tu sûr qu'il n'est pas en 170 (0xAA) tout court ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Par défaut
    Bonojur,
    Merci pour ta réponse.
    D'après ce que j'ai vu, putwc est utilisé pour mettre un caractère dans un fichier, et writeconsolew est utilisé pour afficher directement un caractère à l'écran. Ca pourrait me convenir (bine que j'ai du mal à l'utiliser), mais je cherche à manipuler ces caractères dans des strings, donc le problème se poserait encore après.
    Il semblerait qu'il soit possible de changer le code de la page. Je testerais bien cette solution, mais je n'arrive pas à déterminer le codepage correspondant.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    putwc() écrit dans un flux C, qui peut très bien être stdout.

    En C++, tu peux utiliser des std::wstring et des wchar_t si tu veux programmer en unicode. Par contre, évite les flux standard en unicode (wcout etc.), car ils ne marchent pas partout (sous MinGW, par exemple, ça foire).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Par défaut
    D'après la msdn de mon visual studio 2005:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int putc(
       int c,
       FILE *stream 
    );
    wint_t putwc(
       wchar_t c,
       FILE *stream 
    );
    Donc soit je ne regarde pas la bonne doc, soit je ne comprend pas....

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Qu'est-ce que tu ne comprends pas ?
    Tu ne connais pas les flux C (FILE *) ?
    (ce qui serait normal, si tu n'as appris que le C++)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour une console Windows, la doc de SetConsoleOutputCP() indique que changer la page de codes ne sert à rien si tu ne changes pas également la police.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Par défaut
    pour moi c'est sous entendu seletionner la police lucida

Discussions similaires

  1. [AC-2007] Affichage caractères unicode dans état
    Par microsophistic dans le forum IHM
    Réponses: 1
    Dernier message: 04/07/2011, 11h45
  2. [log4J] affichage des log4J dans la console (texte bleu)
    Par lalie.perso dans le forum Logging
    Réponses: 1
    Dernier message: 13/04/2006, 13h52
  3. [Eclipse 3.1.1] Afficher de l'unicode dans la Console
    Par Didier69 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 31/12/2005, 03h03
  4. [TOMCAT][LOGS]pas d'affichage de trace dans la console
    Par fabszn dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 23/08/2005, 02h28
  5. [xm] pb affichage caractère e dans l'o ..
    Par peppena dans le forum XML/XSL et SOAP
    Réponses: 21
    Dernier message: 25/02/2004, 10h16

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