Widzę dwie możliwości. Pierwsza z nich nie jest poprawnie ustawiona. Od MSDN:
Konwersja przypadku towlower
jest specyficzna dla ustawień regionalnych. Tylko znaki odnoszące się do aktualnego ustawienia regionalnego zmieniają się w przypadku. Funkcje bez sufiksu _l
używają aktualnie ustawionych ustawień narodowych.
Drugim jest kodowanie pliku źródłowego. L'Я'
może oznaczać różne rzeczy na podstawie tego, z czym jest zakodowany twój plik źródłowy. Nie zadziała, na przykład, jeśli masz go w UTF-8
. Upewnij się, że masz go w UTF-16
. Lub w celu usunięcia ewentualnych nieporozumień umieścić go jak ten '\u042F'
Aktualizacja: Na drugim myśli cały ten L
biznesu jest trudne. Jeśli kompilator poprawnie zrozumie kodowanie, na przykład poprzez BOM, może to być dobre z UTF-8
lub innym kodowaniem. Ważne, żeby wiedział, co to jest kodowanie. Musi to być bardzo specyficzne dla wdrożenia.
Kolejna zmiana: Aby rozwiązać ten problem, spróbuj ustawić locale poprzez:
_wsetlocale(LC_ALL, L"ru-RU");
albo korzystać z wersji, która pobiera jako parametr ustawienia regionalne (_towlower_l
).
Jest też na górze wszystko, co pragma, które mówi kompilatorowi, jak traktować w pliku niecyfrowe znaki ASCII.
[Zamykamy wszystkie pytania dotyczące literówek] (http://meta.stackexchange.com/questions/167342/close-all-the-typo-questions) przy okazji. –
@ H2CO3: Teraz też mnie oszukałeś :(Zobacz ['towlower'] (http://en.cppreference.com/w/cpp/string/wide/towlower) – Zeta
Co masz na myśli? Nie ma literówki. –