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