Bonjour à tous,
Compilateur : Visual C++ 2005
O.S : Windows XP
J'ai un problème que je n'arrive pas à résoudre avec la mise en majuscule d'un mot contenant des accents.
Voilà un code minimal qui reproduit le problème :
En débuggant, si j'entre "sébastien" je vois que le deuxième caractère de la string "first_name" vaut bien 0x82 (ASCII 'é'). Mais après le passage à la casse en majuscule, j'obtiens :
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
19
20 #include <iostream> #include <string> #include <algorithm> using namespace std; int main(void) { string first_name; cout << endl << "First Name : "; getline(cin, first_name); locale locl ("French_france"); transform( first_name.begin(), first_name.end(), first_name.begin(), toupper ); cout << endl << "First Name (uppercase) : " << first_name; return 0; }
S*BASTIEN
Où '*' vaut toujours 0x82 et non 'E'.
Coment utiliser convenablement les locales ?
En vous remerciant.
Partager