mbrtoc8
|
Определено в заголовочном файле
<uchar.h>
|
||
| (начиная с C23) | ||
Преобразует узкий многобайтовый символ в кодировку UTF-8.
Если s не является нулевым указателем, анализирует не более n байт многобайтовой строки символов, начиная с байта, на который указывает s , чтобы определить количество байт, необходимых для завершения следующего многобайтового символа (включая любые последовательности сдвига). Если функция определяет, что следующий многобайтовый символ в s является полным и корректным, преобразует его в UTF-8 и сохраняет первую кодовую единицу UTF-8 в * pc8 (если pc8 не является нулевым указателем).
Если UTF-8 кодировка многобайтового символа в
*
s
состоит более чем из одной UTF-8 кодовой единицы, то после первого вызова этой функции
*
ps
обновляется таким образом, что следующий вызов
mbrtoc8
запишет дополнительные UTF-8 кодовые единицы без обращения к
*
s
.
Если s является нулевым указателем, значения n и pc8 игнорируются, и вызов эквивалентен mbrtoc8 ( nullptr, "" , 1 , ps ) .
Если создаваемая кодовая единица UTF-8 равна u8 ' \0 ' , состояние преобразования * ps представляет начальное состояние сдвига.
Многобайтовая кодировка, используемая этой функцией, определяется текущей активной локалью C.
Содержание |
Параметры
| pc8 | - | указатель на место, куда будут записаны результирующие кодовые единицы UTF-8 |
| s | - | указатель на многобайтовую строку символов, используемую в качестве входных данных |
| n | - | ограничение на количество байтов в s, которые могут быть проверены |
| ps | - | указатель на объект состояния преобразования, используемый при интерпретации многобайтовой строки |
Возвращаемое значение
Первое из следующих условий, которое применяется:
- 0 если символ, преобразованный из s (и сохранённый в * pc8 если не null), был нулевым символом.
-
Количество байт
[1,n]многобайтового символа, успешно преобразованного из s . - ( size_t ) - 3 если следующая кодовая единица UTF-8 из символа, чьё кодирование состоит из нескольких кодовых единиц, была записана в * pc8 . В этом случае никакие байты из входных данных не обрабатываются.
- ( size_t ) - 2 если следующие n байт составляют неполный, но пока корректный многобайтовый символ. Ничего не записывается в * pc8 .
- ( size_t ) - 1 если произошла ошибка кодирования. Ничего не записывается в * pc8 , значение EILSEQ сохраняется в errno , а значение * ps становится неопределённым.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.30.1.1 Функция mbrtoc8
Смотрите также
|
(C23)
|
преобразует строку UTF-8 в узкую многобайтовую кодировку
(функция) |
|
C++ documentation
для
mbrtoc8
|
|