Я пишу некоторые функции преобразования строк, похожие на atoi()
или strtoll()
. Я хотел включить версию моей функции, которая принимала бы char16_t * или char32_t *, а не только char * или wchar_t *.C11 Поддержка Unicode
Моя функция работает нормально, но, как я ее писал, я понял, что не понимаю, что такое char16_t или char32_t. Я знаю, что стандарт требует только того, чтобы они были целыми типами не менее 16 или 32 бит соответственно, но импликация заключается в том, что они являются UTF-16 или UTF-32.
Я также знаю, что стандарт определяет несколько функций, но они не включали никаких функций * get или * put (как они делали, когда они добавили в wchar.h
в C99).
Итак, мне интересно: что они ожидают от меня char16_t и char32_t?
Преобразование в UTF-8, что еще? – Deduplicator
@Deduplicator: Если это то, что они ожидали от вас, вам следует подумать, что они предоставили вам функции для этого ... –
Планируете ли вы поддерживать не только '0..9' (U + 0030 .. U + 0039) (и, возможно, 'A..Z/a..z', до обычного обычного уровня, base-36), но все остальные символы, помеченные как« Numeric »в полной таблице Unicode? «Coz» включает в себя типографические формы (супер- и индексы, обведенные номера до 20 (!)) И специфические для сценариев формы (арабские цифры, ивритские номера), а также римские цифры, древнегреческий и «подсчетные стержни» и многое другое. – usr2564301