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++?
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.
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 !!
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.
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.