std:: mbrtoc8
|
Определено в заголовочном файле
<cuchar>
|
||
|
std::
size_t
mbrtoc8
(
char8_t
*
pc8,
const
char
*
s,
|
(начиная с C++20) | |
Преобразует узкий многобайтовый символ в кодировку 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 игнорируются, и вызов эквивалентен std :: mbrtoc8 ( nullptr, "" , 1 , ps ) .
Если создаваемая кодовая единица UTF-8 равна u8 ' \0 ' , состояние преобразования * ps представляет начальное состояние сдвига.
Многобайтовая кодировка, используемая этой функцией, определяется текущей активной локалью C.
Содержание |
Параметры
| pc8 | - | указатель на место, куда будут записаны результирующие кодовые единицы UTF-8 |
| s | - | указатель на многобайтовую строку символов, используемую в качестве входных данных |
| n | - | ограничение на количество байтов в s, которые могут быть проверены |
| ps | - | указатель на объект состояния преобразования, используемый при интерпретации многобайтовой строки |
Возвращаемое значение
Первое из следующих условий, которое применяется:
- 0 если символ, преобразованный из s (и сохранённый в * pc8 если не нулевой), был нулевым символом.
- количество байт [ 1 ... n ] многобайтового символа, успешно преобразованного из s .
- static_cast < std:: size_t > ( - 3 ) если следующая кодовая единица UTF-8 из символа, чьё кодирование состоит из нескольких кодовых единиц, была записана в * pc8 . В этом случае никакие байты из входных данных не обрабатываются.
- static_cast < std:: size_t > ( - 2 ) если следующие n байт составляют неполный, но пока корректный многобайтовый символ. Ничего не записывается в * pc8 .
- static_cast < std:: size_t > ( - 1 ) если произошла ошибка кодирования. Ничего не записывается в * pc8 , значение EILSEQ сохраняется в errno , а значение * ps не определено.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
преобразует строку UTF-8 в узкую многобайтовую кодировку
(функция) |
|
(C++11)
|
преобразует узкий многобайтовый символ в кодировку UTF-16
(функция) |
|
Документация C
для
mbrtoc8
|
|