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