Эксперименты с setlocale, сравнение как однобайтовых строк и так далее — ничего не дают. В любом случае сортировка идёт неправильно. Спотыкается или на букве Ё или Й.
Здравствуйте, Andrusha, Вы писали:
A>Доброго Нового года!
A>
A>int iRes = wcscmp(L"актёр", L"актуа");
A>
A>Почему в этом случае iRes == 1?
A>Эксперименты с setlocale, сравнение как однобайтовых строк и так далее — ничего не дают. В любом случае сортировка идёт неправильно. Спотыкается или на букве Ё или Й.
Всё верно. Эти буквы идут за кирилличесуим алфавитом. Можно написать свою функцию сравнения. Но наверняка есть что-нить стандартненькое. Тоже жду вариантов ответа.
Здравствуйте, k06a, Вы писали:
K>Здравствуйте, Andrusha, Вы писали:
A>>Доброго Нового года!
A>>
A>>int iRes = wcscmp(L"актёр", L"актуа");
A>>
A>>Почему в этом случае iRes == 1?
A>>Эксперименты с setlocale, сравнение как однобайтовых строк и так далее — ничего не дают. В любом случае сортировка идёт неправильно. Спотыкается или на букве Ё или Й.
K>Всё верно. Эти буквы идут за кирилличесуим алфавитом. Можно написать свою функцию сравнения. Но наверняка есть что-нить стандартненькое. Тоже жду вариантов ответа.
Это, конечно, какбы понятно, но есть нюанс. Вот такой код работает верно:
_tsetlocale(LC_ALL, _T("Russian"));
int iRes = wcscoll(L"актёр", L"актуа");
Здравствуйте, Andrusha, Вы писали:
A>Но проблемы с Й остаются: A>
A>int iRes = wcscoll(L"аил", L"айканье");
A>
A>Почему-то iRes == 1.
вы путаетесь в показаниях: http://ideone.com/kG4aw
четко изложите какой у вас код, какой результат, не путайте 'ё' и 'Ё', 'й' и 'Й'
полезная таблица символов: http://www.utf8-chartable.de/unicode-utf8-table.pl
в режиме телепатии могу предположить, что либо кодировка исходников неочевидная, либо вы неправильно выставляете локаль
рекомендую вам в тесте выводить коды символов и сравнивать с табличкой символов
еще можно проверять, что же возвращает setlocale
Здравствуйте, uzhas, Вы писали:
U>в режиме телепатии могу предположить, что либо кодировка исходников неочевидная, либо вы неправильно выставляете локаль U>еще можно проверять, что же возвращает setlocale
Здравствуйте, Andrusha, Вы писали:
A>Доброго Нового года!
A>
A>int iRes = wcscmp(L"актёр", L"актуа");
A>
A>Почему в этом случае iRes == 1?
A>Эксперименты с setlocale, сравнение как однобайтовых строк и так далее — ничего не дают. В любом случае сортировка идёт неправильно. Спотыкается или на букве Ё или Й.