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:
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:
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:
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