std:: c8rtomb
|
Definido en el encabezado
<cuchar>
|
||
|
std::
size_t
c8rtomb
(
char
*
s, char8_t c8,
std::
mbstate_t
*
ps
)
;
|
(desde C++20) | |
Convierte un único punto de código de UTF-8 a una representación de carácter multibyte estrecho.
Si s no es un puntero nulo y c8 es la última unidad de código en una codificación UTF-8 válida de un punto de código, la función determina el número de bytes necesarios para almacenar la representación del carácter multibyte de ese punto de código (incluyendo cualquier secuencia de desplazamiento, y teniendo en cuenta el estado actual de conversión multibyte * ps ), y almacena la representación del carácter multibyte en el arreglo de caracteres cuyo primer elemento está apuntado por s , actualizando * ps según sea necesario. Como máximo MB_CUR_MAX bytes pueden ser escritos por esta función.
Si c8 no es la unidad de código UTF-8 final en una representación de un punto de código, la función no escribe en el array apuntado por s , solo se actualiza * ps .
Si
s
es un puntero nulo, la llamada es equivalente a
std
::
c8rtomb
(
buf, u8
'
\0
'
, ps
)
para algún búfer interno
buf
.
Si c8 es el carácter nulo u8 ' \0 ' , se almacena un byte nulo, precedido por cualquier secuencia de desplazamiento necesaria para restaurar el estado de desplazamiento inicial y el parámetro de estado de conversión * ps se actualiza para representar el estado de desplazamiento inicial.
La codificación multibyte utilizada por esta función está especificada por la configuración regional de C actualmente activa.
Contenidos |
Parámetros
| s | - | puntero al array de caracteres estrechos donde se almacenará el carácter multibyte |
| c8 | - | la unidad de código UTF-8 a convertir |
| ps | - | puntero al objeto de estado de conversión utilizado al interpretar la cadena multibyte |
Valor de retorno
El número de bytes almacenados en el objeto array (incluyendo cualquier secuencia de desplazamiento). Esto puede ser cero cuando c8 no es la unidad de código final en la representación UTF-8 de un punto de código.
Si c8 es inválido (no contribuye a una secuencia de char8_t correspondiente a un carácter multibyte válido), el valor de la macro EILSEQ se almacena en errno , static_cast < std:: size_t > ( - 1 ) se retorna, y el estado de conversión queda sin especificar.
Notas
Las llamadas a
c8rtomb
con un argumento de puntero nulo para
s
pueden introducir una condición de carrera con otras llamadas a
c8rtomb
con un argumento de puntero nulo para
s
.
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
(C++20)
|
convierte un carácter multibyte estrecho a codificación UTF-8
(función) |
|
(C++11)
|
convierte un carácter UTF-16 a codificación multibyte estrecha
(función) |
|
Documentación C
para
c8rtomb
|
|