Compartir a través de


mbsrtowcs

Convierte una cadena de caracteres multibyte en la configuración regional actual en una cadena de caracteres anchos correspondiente, con la capacidad de reinicio en medio de un carácter multibyte. Hay disponible una versión más segura de esta función; consulte mbsrtowcs_s.

Sintaxis

size_t mbsrtowcs(
   wchar_t *wcstr,
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
   wchar_t (&wcstr)[size],
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
); // C++ only

Parámetros

wcstr
Dirección para almacenar la cadena de caracteres anchos convertida.

mbstr
Puntero indirecto a la ubicación de la cadena de caracteres multibyte a convertir.

count
Número máximo de caracteres (no bytes) a convertir y almacenar en wcstr.

mbstate
Un puntero a un objeto mbstate_t de estado de la conversión. Si este valor es un puntero nulo, se utiliza un objeto de estado de la conversión interno estático. Dado que el objeto interno mbstate_t no es seguro para subprocesos, se recomienda pasar siempre su propio mbstate parámetro.

Valor devuelto

Devuelve el número de caracteres convertidos correctamente, sin incluir el carácter nulo de terminación, de haberlo. Devuelve (size_t)(-1) si se produjo un error y establece en errno EILSEQ.

Comentarios

La función mbsrtowcs convierte una cadena de caracteres multibyte indirectamente señalada por mbstr en caracteres anchos almacenados en el búfer señalado por wcstr, utilizando el estado de conversión contenido en mbstate. La conversión continúa para cada carácter hasta que se encuentra un carácter multibyte nulo de terminación, una secuencia multibyte que no se corresponde con un carácter válido en la configuración regional actual o hasta count que se hayan convertido los caracteres. Si mbsrtowcs encuentra el carácter multibyte nulo ('\0') antes o al producirse count, lo convierte en un carácter nulo de terminación de 16 bits y se detiene.

Por tanto, la cadena de caracteres anchos en wcstr tiene terminación nula solo si mbsrtowcs encuentra un carácter multibyte nulo durante la conversión. Si las secuencias señaladas por mbstr y wcstr se superponen, el comportamiento de mbsrtowcs no está definido. mbsrtowcs se ve afectado por la LC_TYPE categoría de la configuración regional actual.

La mbsrtowcs función difiere de mbstowcs, _mbstowcs_l por su capacidad de reinicio. El estado de la conversión se almacena en mbstate para llamadas posteriores a la misma o a otras funciones reiniciables. Los resultados no están definidos cuando se combina el uso de funciones reiniciables y no reiniciables. Por ejemplo, una aplicación debe usar mbsrlen en lugar de mbslen, si se usa una llamada posterior a mbsrtowcs en lugar de mbstowcs.

Si wcstr no es un puntero nulo, al objeto de puntero al que apunta mbstr se le asigna un puntero NULO si se detiene la conversión porque se alcanzó un carácter nulo de terminación. De lo contrario, se le asigna la dirección justo después del último carácter multibyte convertido, si existe. Permite que una llamada de función posterior reinicie la conversión donde se detuvo esta llamada.

Si el wcstr argumento es un puntero nulo, se omite el count argumento y mbsrtowcs devuelve el tamaño necesario en caracteres anchos para la cadena de destino. Si mbstate es un puntero nulo, la función usa un objeto de estado de la conversión mbstate_t interno estático, no seguro para subprocesos. Si la secuencia mbstr de caracteres no tiene una representación de caracteres multibyte correspondiente, se devuelve -1 y errno se establece en EILSEQ.

Si mbstr es un puntero nulo, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, esta función establece errno en EINVAL y devuelve -1.

En C++, esta función tiene una sobrecarga de plantilla que invoca una contrapartida más nueva y segura de la función. Para obtener más información, consulte Sobrecargas de plantilla seguras.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Excepciones

La mbsrtowcs función es segura para varios subprocesos siempre y cuando no haya ninguna función en el subproceso actual, setlocale siempre y cuando esta función se esté ejecutando y el mbstate argumento no sea un puntero nulo.

Requisitos

Routine Encabezado necesario
mbsrtowcs <wchar.h>

Consulte también

Conversión de datos
Configuración regional
Interpretación de secuencias de caracteres de varios bytes
mbrtowc
mbtowc, _mbtowc_l
mbstowcs, _mbstowcs_l
mbsinit