c8rtomb
|
Definido en el encabezado
<uchar.h>
|
||
| (desde C23) | ||
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 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 cambio necesaria para restaurar el estado de cambio inicial y el parámetro de estado de conversión * ps se actualiza para representar el estado de cambio 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 arreglo 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 , ( size_t ) - 1 se retorna, y el estado de conversión no está especificado.
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
Razón: sin ejemplo |
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.30.1.2 The c8rtomb function
Véase también
|
(C23)
|
convierte un carácter multibyte estrecho a codificación UTF-8
(función) |
|
C++ documentation
para
c8rtomb
|
|