SHOW:
|
|
- or go back to the newest paste.
1 | #include <iostream> | |
2 | #include <locale> | |
3 | #include <vector> | |
4 | ||
5 | std::ostream & operator << ( std::ostream &os, const wchar_t * txt ) | |
6 | { | |
7 | - | std::wcout << L"User locale: " << loc.name() << std::endl; |
7 | + | int new_size = WideCharToMultiByte( CP_UTF8, 0, txt, -1, NULL, NULL, NULL, NULL ); |
8 | if ( new_size <= 0 ) | |
9 | - | std::wcout << str << std::endl; |
9 | + | return os; |
10 | std::vector<char> buffer(new_size); | |
11 | WideCharToMultiByte( CP_UTF8, 0, txt, -1, &buffer[0], new_size, NULL, NULL ); | |
12 | os << &buffer[0]; | |
13 | - | std::wcout << toupper(*it, loc); |
13 | + | return os; |
14 | } | |
15 | ||
16 | - | std::wcout << std::endl; |
16 | + | |
17 | { | |
18 | std::locale loc("fr_FR"); | |
19 | std::cout << "User locale: " << loc.name() << std::endl; | |
20 | std::wstring str(L"àäâéèêëïîöôüû"); | |
21 | std::cout << str.c_str() << std::endl; | |
22 | ||
23 | for(std::wstring::iterator it=str.begin();it!=str.end();++it) | |
24 | { | |
25 | *it = toupper(*it, loc); | |
26 | } | |
27 | std::cout << str.c_str(); | |
28 | std::cout << std::endl; | |
29 | ||
30 | return 0; | |
31 | } |