Comment gérer les caractères spéciaux comme "ç" en lecture et en écriture

Signaler
Messages postés
16
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
8 juillet 2009
-
Messages postés
11
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
11 mars 2007
-
Bonjour,

Mon code ne comprend pas lorsque j'entre au clavier un ç. Voici un exemple:

string langue;
cout<<"Entrez la langue"<<endl;
//Supposons que je rentre : français
cin>>langue;
if(langue == "français") ... //on ne pourra jamais rentrer dans cette boucle.

Comment faire pour régler les caractères spéciaux en lecture et écriture en C/C++?

Je vous remercie.

Aurélie

5 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,


Tu peux faire un echo ç > temp.txt dans une console, puis faire un
copier coller du caractère dans ton source. Il doit trainer aussi des
utilitaires et des tables de convertion sur le net.
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

pour les chaines de caracteres, il ne faut pas utiliser ==
mais strcmp, istrcmp, .....
ici :
if !istrcmp( langue, "français")
{
    // les 2 mots sont équivalents
}

le test avec = ne fonctionne qu'1 caractere
un truc aussi à penser : les problemes de casse !!

donc aucun rapport avec les caracteres speciaux !
Messages postés
16
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
8 juillet 2009

pour les chaines de caracteres, il ne faut pas utiliser ==
mais strcmp, istrcmp, .....
ici :
if !istrcmp( langue, "français")
{
    // les 2 mots sont équivalents
}

le test avec = ne fonctionne qu'1 caractere
un truc aussi à penser : les problemes de casse !!

donc aucun rapport avec les caracteres speciaux !
_--------------------------------------------------------

Bonjour,

tu te trompes. Je ne te parle pas de char * mais de string. Or, pour une string, l'opérateur surchargé == permet de faire une comparaison de cette façon.
Maintenant, pour ma question, ca a rapport avec les caractères spéciaux. Autre exemple, si tu écris cout<<"é";
 à l'écran, il y aura autre chose qui sera écrit à la place. Fais le test et tu verras de quoi je parle.

Il y a une façon de gérer le problème que je parle en incluant une librairie (ou autre chose?) mais je ne m'en souviens plus.

Aurélie.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Ah vi y a aussi Windows qui fournit des fonctions de conversions (Faut mettre un include de Windows.h si c'est pas déjà fait) :

CharToOem
OemToChar
Messages postés
11
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
11 mars 2007

Bonjour,

La librairie qui permet de gérer des chaînes de caractères accentués est la Glib fournit avec GTK mais qui marche aussi indépendamment. On la trouve ici pour les sources et ici pour la libraire windows.

Il faut utiliser la classe Glib::ustring qui repose sur l'encodage UTF-8. La classe fournit une interface similaire à std::string, et il existe aussi des interfaces pour passer entre les 2 types.

Je ne pourrais pas plus t'aider car je ne l'ai jamais utilisé, je sais juste qu'elle existe.

Bonne prog.
+