Здравствуйте, watchmaker, Вы писали:
W>Заметь, что когда программа стартует, у неё локаль "C". Это не та локаль, которая стоит у пользователя.
W>И в локале "C" нет вообще никакой кириллицы или юникода.
Ну, в винде же с локалью по умолчанию
iswalnum русские буквы пропускает... То есть это глюк винды? А макось делает все верно?
W>Программы, которым хочется использовать пользовательскую не зря вызывают при старте setlocale(LC_ALL, "").
Этот код установит пользовательскую? Но, все равно, я так понимаю, это мне не поможет? Даже если главный язык стоит русским?
W>То есть это разные задачи.
W>Если нужно определить класс юникод-символа по его же номеру в юникод-таблице, то нужно брать библиотеку для работы с юникодом.
То есть
iswalnum и прочие подобные функции для моей задачи не годятся? Понятно.
W>https://stackoverflow.com/questions/11107608/whats-wrong-with-c-wchar-t-and-wstrings-what-are-some-alternatives-to-wide/11107667#11107667
Постараюсь разобраться, спасибо
W>В некотором смысле wchar_t сломан везде. Он не подходит для работы с юникодом. Этот тип как раз про локали.
W>Нужно использовать ui32 для codepoints, и что-нибудь вроде utf8 для строк (ну или utf16, utf32, где надо).
Это теоретически или практически? В вижуале wchar_t имеет размер в 16бит. Разве этого недостаточно для того, чтобы записать любую
реальную букву? Ну, пускай, с небольшими ограничениями? Или есть опасность, что где-то wchar_t будет вообще 8бит?