Bonsoir !
Tout est dans le titre. Comment puis-je faire apparaître é dans un texte en C++ ?
-----
Bonsoir !
Tout est dans le titre. Comment puis-je faire apparaître é dans un texte en C++ ?
Je pense qu'il faut en savoir un peu plus pour pouvoir répondre à la question. En particulier, il faut savoir de quel environnement tu parles, et ce que tu entends par affichage.
Dans ma config par exemple, j'édite le source et j'affiche une chaine de caractère qui contient un é.
Je le compile et je l'execute dans une console et tout va bien... cela affiche un é dans la console..
Je viens de tester avec un fprintf(stderr,"ééééé);
Ok... c'est du C++ de chez C...
Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
J'utilise le logiciel Dev-C++.
En exécutant cout<<"Hé, je t'ai vu !";
J'obtiens à l'écran : Hù, je t'ai vu !
Ou pas loin pour le ù
Je pense que c'est simplement un problème d'encodage et pas du tout un problème de compilateur.
Il faudrait que tu regardes si il n'y a pas quelque chose dans l'éditeur de texte que tu utilises qui te permette de fixer l'encodage des caractères (en particulier ceux accentués). Il faudrait qu'il corresponde avec celui qui est utilisé pour ta console d'exécution...
Je peux pas t'en dire plus... mais on trouve ce genre de choses sur le web :
source : http://userfriendly.free.fr/christop.../8-console-apiles applications Windows utilise "Cp1252" comme encodage tandis que les applications MSDOS utilise "Cp850", donc même avec de bonnes traductions définies dans un fichier, une application console peut émettre du texte parfois illisible à cause de ce problème.
Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Rebondissement de l'affaire : si je tape
cout<<0x82;
82 étant le code de é en ascii étendu,
est affiché à l'écran : "130".
130 est le code décimal de é en ascii...
Quelqu'un a une idée du pourquoi du comment ?
Bonsoir,
Moi, p'sieu, j'ai une idée... Aveccout << 0x82 ;tu passes la valeur 0x82 à cout, il se trouve que c'est écrit en hexa, mais c'est un entier, pas un caractère. Si tu avais écritcout << 130 ;tu ne te serais même pas posé la question. Il faut bien passer un char à cout, comme ça:cout << char (0x82) ;En fait c'est juste une surcharge:
ostream& operator << (ostream&, int) ;
ostream& operator << (ostream&, char) ;
-- françois
Ca marche, merci
Mais question : pour faire apparaître ce é je fais actuellement :
char e_aigu=0x82;
char e_grave=0x8A;
cout<<"Le pr"<<e_aigu<<"sent programme g"<<e_grave<<"re et affiche des r"<<e_aigu<<"sultats";
Ce qui donne "Le présent programme gère et affiche des résultats".
Comme vous le voyez c'est assez lourd et pénible à mettre en oeuvre : y aurait-il une solution plus intelligente et plus rapide ?
C'est sûr que c'est moche... mais il n'y a pas d'autre solution, c'est une question de bibliothèque "standard".
Si les ostreams de ton implémentation savent gérer les caractères Unicode, pas (trop) de problèmes. Mais sinon c'est la galère.
En vrai on met plutôt les messages dans un tableau (par exemple):char *messages[] = {et on fait
// ...
"Affichage du résultat",
// ...
} ;cout << messages[le_bon_indice] ;Comme ça en cas de portage (ou de traduction) seule la table de messages doit être réencodée ou traduite.
Mais je suis d'accord, on ne devrait pas avoir à faire ça.
-- françois
Mais question : pour faire apparaître ce é je fais actuellement :
char e_aigu=0x82;
char e_grave=0x8A;
cout<<"Le pr"<<e_aigu<<"sent programme g"<<e_grave<<"re et affiche des r"<<e_aigu<<"sultats";
Ce qui donne "Le présent programme gère et affiche des résultats".
Comme vous le voyez c'est assez lourd et pénible à mettre en oeuvre : y aurait-il une solution plus intelligente et plus rapide ?
Préprocesseur?
Bonsoir,
C'est effectivement une méthode assez utile. Mais il est vrai que là-dessus Java est mieux, avec ses caractères Unicode style '\u82', mais au prix de la simulation de la JVM.
Alors qu'il serait tellement plus simple d'avoir une fois pour toutes un codage sur 16, voire 32 bits, pour tous les caractères... Ce serait trop simple peut-être.
-- françois
Préprocesseur, c'est quoi au juste ?
Bonjour,
C'est le bestiau qui gère les #define et autres #if...#endif. À l'origine c'était un programme complètement indépendant (cpp sous Unix BSD / Solaris) qui, à partir d'un fichier source (.c), produisait un fichier intermédiaire (.i) en faisant (entre autres) les choses suivantes:
- virer les commentaires,
- insérer le fichier original à la place de chaque #include (oui, ça peut être énorme),
- remplacer les macros par leur expansion,
- évaluer les #if et ne garder que les lignes nécessaires.
Ensuite le compilo (cc) fabrique un objet linkable (.o). Le préprocesseur pouvait d'ailleurs être utilisé indépendamment de C/C++, par exemple pour bricoler des fichiers sources de données "variables" (en fonction de l'environnement par exemple).
Auhourd'hui le préprocesseur est souvent directement intégré dans l'EDI et on n'a pas (à moins d'options spéciales en général bien planquées) accès au .i.
-- françois