std:: c8rtomb
|
Определено в заголовочном файле
<cuchar>
|
||
|
std::
size_t
c8rtomb
(
char
*
s, char8_t c8,
std::
mbstate_t
*
ps
)
;
|
(начиная с C++20) | |
Преобразует единичную кодовую точку из UTF-8 в узкое многобайтовое представление символа.
Если s не является нулевым указателем и c8 является последним кодовым юнитом в корректной UTF-8 кодировке кодовой точки, функция определяет количество байт, необходимое для хранения многобайтового представления этого символа (включая сдвиговые последовательности и учитывая текущее состояние многобайтового преобразования * ps ), и сохраняет многобайтовое представление символа в массиве, на первый элемент которого указывает s , обновляя при необходимости * ps . Функция может записать не более MB_CUR_MAX байт.
Если c8 не является конечным кодом UTF-8 в представлении кодовой точки, функция не производит запись в массив, на который указывает s , обновляется только * ps .
Если
s
является нулевым указателем, вызов эквивалентен
std
::
c8rtomb
(
buf, u8
'
\0
'
, ps
)
для некоторого внутреннего буфера
buf
.
Если c8 является нулевым символом u8 ' \0 ' , сохраняется нулевой байт, которому предшествует любая последовательность сдвига, необходимая для восстановления начального состояния сдвига, и параметр состояния преобразования * ps обновляется для представления начального состояния сдвига.
Многобайтовая кодировка, используемая этой функцией, определяется текущей активной локалью C.
Содержание |
Параметры
| s | - | указатель на массив узких символов, где будет сохранен многобайтовый символ |
| c8 | - | кодовая единица UTF-8 для преобразования |
| ps | - | указатель на объект состояния преобразования, используемый при интерпретации многобайтовой строки |
Возвращаемое значение
Количество байтов, хранящихся в объекте массива (включая любые сдвиговые последовательности). Это может быть нулевым, когда c8 не является конечной кодовой единицей в UTF-8 представлении кодовой точки.
Если c8 некорректен (не вносит вклад в последовательность char8_t , соответствующую корректному многобайтовому символу), значение макроса EILSEQ сохраняется в errno , static_cast < std:: size_t > ( - 1 ) возвращается, и состояние преобразования не определено.
Примечания
Вызовы
c8rtomb
с нулевым указателем в качестве аргумента для
s
могут приводить к состоянию гонки данных с другими вызовами
c8rtomb
с нулевым указателем в качестве аргумента для
s
.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
преобразует узкий многобайтовый символ в кодировку UTF-8
(функция) |
|
(C++11)
|
преобразует символ UTF-16 в узкую многобайтовую кодировку
(функция) |
|
Документация C
для
c8rtomb
|
|