toupper et locale français ?
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 :
Code:
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;
} |
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 :
S*BASTIEN
Où '*' vaut toujours 0x82 et non 'E'.
Coment utiliser convenablement les locales ?
En vous remerciant.