Re: Есть ли iswalnum без привязки к локали.
От: watchmaker  
Дата: 12.01.21 16:50
Оценка: 4 (1)
Здравствуйте, Went, Вы писали:

W>Во-первых, мне не хочется переключать локаль в иную, чем стоит по умолчанию,

Заметь, что когда программа стартует, у неё локаль "C". Это не та локаль, которая стоит у пользователя.
И в локале "C" нет вообще никакой кириллицы или юникода.
Программы, которым хочется использовать пользовательскую не зря вызывают при старте setlocale(LC_ALL, "").


W> Да и при чем тут локаль, строго говоря? Мне просто нужно узнать класс символа, который однозначно определяется этими двумя байтами (про экзотику не будем), и символ "ъ" будет буквой хоть в Испании, хоть в Китае.

Код символа в юникоде — да, не зависит и определяется номером.
Только вот что будет читаться или писаться в поток wcin/wcout определяется локалью.
То есть это разные задачи.
Если нужно определить класс юникод-символа по его же номеру в юникод-таблице, то нужно брать библиотеку для работы с юникодом.


W>Или это глюк маковской стандартной библиотеки?

Можно так сказать.
https://stackoverflow.com/questions/11107608/whats-wrong-with-c-wchar-t-and-wstrings-what-are-some-alternatives-to-wide/11107667#11107667
В некотором смысле wchar_t сломан везде. Он не подходит для работы с юникодом. Этот тип как раз про локали.
Нужно использовать ui32 для codepoints, и что-нибудь вроде utf8 для строк (ну или utf16, utf32, где надо).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.