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é"

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;
}
Ca fonctionne, le résultat est :
Mot avant : ÚtÚ
Mot apres : ete

Maintenant, si je demande une saisie du mot :

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;
}
Ca ne fonctionne pas :
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

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;
}
Mais là encore, le é avec cin a une valeur -126; en l'affectant à la variable dans le code : -23 avec un caractère Ú ?!?!

Merci