Compartir a través de


c16rtomb, c32rtomb

Convierta un carácter ancho UTF-16 o UTF-32 en un carácter multibyte UTF-8.

Sintaxis

size_t c16rtomb(
    char *mbchar,
    char16_t wchar,
    mbstate_t *state
);
size_t c32rtomb(
    char *mbchar,
    char32_t wchar,
    mbstate_t *state
);

Parámetros

mbchar
Puntero a una matriz para almacenar el carácter multibyte UTF-8 convertido.

wchar
Carácter ancho que se va a convertir.

state
Puntero a un objeto mbstate_t .

Valor devuelto

El número de bytes almacenados en el objeto de matriz mbchar, incluidas las secuencias de desplazamiento. Si wchar no es un carácter ancho válido, se devuelve errno el valor (size_t)(-1), se establece EILSEQen y el valor de state no se especifica.

Comentarios

La c16rtomb función convierte el carácter wchar UTF-16 LE en la secuencia de caracteres estrechos UTF-8 equivalente. Si mbchar no es un puntero nulo, la función almacena la secuencia convertida en el objeto de matriz al mbcharque apunta . Se almacenan hasta MB_CUR_MAX bytes en mbchar, y state se establece en el estado de desplazamiento multibyte resultante.

Si wchar es un carácter ancho nulo, se almacena una secuencia necesaria para restaurar el estado de desplazamiento inicial, si es necesario, seguido del carácter NULL. state se establece en el estado de conversión inicial. La función c32rtomb es idéntica, pero convierte un carácter UTF-32.

Si mbchar es un puntero nulo, el comportamiento equivale a una llamada a la función que sustituye un búfer interno para mbchar y un carácter nulo ancho para wchar.

El objeto de estado de conversión state le permite realizar llamadas posteriores a esta función y otras funciones reiniciables que mantienen el estado de desplazamiento de los caracteres multibyte de salida. Los resultados no están definidos cuando se combina el uso de funciones reiniciables y no reiniciables.

Para convertir caracteres UTF-16 en caracteres multibyte que no sean UTF-8, use las funciones ,_wcstombs_l , wcstombs_s o _wcstombs_s_l.wcstombs

Requisitos

Routine Encabezado necesario
c16rtomb, c32rtomb C, C++: <uchar.h>

Para obtener información sobre la compatibilidad, consulte Compatibilidad.

Consulte también

Conversión de datos
Configuración regional
Interpretación de secuencias de caracteres de varios bytes
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s