Bonsoir,
Je débute en C++ (exercice Mot Mystère sur OC) et malgré mes nombreuses recherches sur internet, je ne comprends pas.
Je voudrais supprimer les accents d'une chaîne. Ci dessous un extrait de code qui fonctionne, si j'indique dans le code : mot="été"
Ca fonctionne, le résultat est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int main() { string mot; mot = "été"; cout << "Mot avant : " << mot << endl; for (int i = 0; mot[i] != '\0'; i++) { if (mot[i] == 'é') { mot[i] = 'e'; } }; cout << "Mot apres : " << mot << endl; return 0; }
Mot avant : ÚtÚ
Mot apres : ete
Maintenant, si je demande une saisie du mot :
Ca ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 int main() { string mot; cin >> mot; cout << "Mot avant : " << mot << endl; for (int i = 0; mot[i] != '\0'; i++) { if (mot[i] == 'é') { mot[i] = 'e'; } }; cout << "Mot apres : " << mot << endl; return 0; }
Mot avant : été
Mot apres : été
J'ai essayé différentes solutions proposées sur le web, transformer en tableau de char, les pointeurs, utilisation de c_str()... : je n'y arrive pas... Et surtout, il y a un truc qui m'échappe...
Merci pour vos éléments d'explication...
Nb : en fait, je m'en sort avec les codes ascii
Mais là encore, le é avec cin a une valeur -126; en l'affectant à la variable dans le code : -23 avec un caractère Ú ?!?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 int main() { string mot; int x; cin >> mot; cout << "Mot avant : " << mot << endl; for (int i = 0; mot[i] != '\0'; i++) { x = mot[i]; if (x == -126) { mot[i] = 'e'; } }; cout << "Mot apres : " << mot << endl; return 0; }
Merci
Partager