Compartir a través de


mbstowcs_s, _mbstowcs_s_l

Convierte una secuencia de caracteres multibyte en una secuencia de caracteres anchos correspondiente.Las versiones de mbstowcs, _mbstowcs_l con las mejoras de seguridad como se describe en Características de seguridad en CRT.

errno_t mbstowcs_s(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char *mbstr,
   size_t count 
);
errno_t _mbstowcs_s_l(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char *mbstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count 
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count,
   _locale_t locale
); // C++ only

Parámetros

  • [out] pReturnValue
    Convierte el número de caracteres.

  • [out] wcstr
    Convertir la dirección del búfer para el resultado de cadena de caracteres anchos.

  • [in] sizeInWords
    El tamaño de la wcstr búfer sin comprobar en las palabras.

  • [in]mbstr
    La dirección de una secuencia de null termina con caracteres multibyte.

  • [in] count
    El número máximo de caracteres anchos para almacenar en el wcstr búfer, sin incluir el valor null de terminación, o _TRUNCATE.

  • [in] locale
    La configuración regional que utilice.

Valor devuelto

Cero si se realiza correctamente, un código de error en caso de error.

Condición de error

Valor devuelto yerrno

wcstris NULL and sizeInWords > 0

EINVAL

El valor de mbstr es NULL.

EINVAL

El búfer de destino es demasiado pequeño para contener la cadena convertida (a menos que count es _TRUNCATE; Consulte la sección comentarios a continuación)

ERANGE

wcstris not NULL and sizeInWords == 0

EINVAL

Si se produce cualquiera de estas condiciones, se invoca la excepción de parámetro no válido como se describe en Validación de parámetros .Si se permite la ejecución para continuar, la función devuelve un código de error y establece errno como se indica en la tabla.

Comentarios

El mbstowcs_s función convierte una cadena de caracteres multibyte señalada por mbstr en caracteres anchos que se almacenan en el búfer al que señala wcstr.La conversión continuará por cada carácter hasta que se cumpla alguna de estas condiciones:

  • Se ha encontrado un null de caracteres multibyte

  • Se encontró un carácter multibyte no válido

  • El número de caracteres anchos almacenados en el wcstr de búfer es igual a count.

La cadena de destino es siempre terminada en null (incluso en el caso de un error).

Si count es el valor especial _TRUNCATE, a continuación, mbstowcs_s convierte tanto de la cadena como se encajan en el búfer de destino, dejando espacio para un terminador null.

Si mbstowcs_s correctamente convierte la cadena de origen, pone el tamaño en caracteres anchos de la cadena convertida, incluido el terminador null, en *pReturnValue (proporcionado pReturnValue no es NULL).Esto ocurre incluso si la wcstr es el argumento NULL y proporciona una manera de determinar el tamaño de búfer requerido.Note that if wcstr is NULL, count is ignored, and sizeInWords must be 0.

Si mbstowcs_s encuentra un carácter multibyte no válido, pone a 0 *pReturnValue, el búfer de destino se establece en una cadena vacía, se establece errno a EILSEQy devuelve EILSEQ.

Si las secuencias señalada por mbstr y wcstr se superponen, el comportamiento de mbstowcs_s no está definido.

Nota de seguridadNota sobre la seguridad

Asegúrese de que wcstr y mbstr no se superponen y que count refleja el número de caracteres multibyte para convertir correctamente.

mbstowcs_sutiliza la configuración regional actual para cualquier comportamiento dependientes de la configuración regional; _mbstowcs_s_les idéntico salvo que utiliza la configuración regional que se pasa en su lugar.Para obtener más información, vea Configuración regional.

En C++, se simplifica utilizando estas funciones las sobrecargas de plantilla; las sobrecargas pueden inferir automáticamente longitud del búfer (lo que elimina la necesidad de especificar un argumento de tamaño) y automáticamente pueden reemplazar las funciones más antiguas y no seguras con sus equivalentes más recientes y seguras.Para obtener más información, vea Sobrecargas de plantilla de seguridad.

Requisitos

Rutina

Encabezado necesario

mbstowcs_s

<stdlib.h>

_mbstowcs_s_l

<stdlib.h>

Para información adicional sobre compatibilidad, consulte compatibilidad en la introducción.

Equivalente en .NET Framework

No es aplicable Para llamar a la función de c estándar, utilice PInvoke. Para obtener más información, consulte Ejemplos de invocación de plataforma.

Vea también

Referencia

Conversión de datos

Configuración regional

MultiByteToWideChar

Interpretación de secuencias de Multibyte- Carácter

_mbclen, mblen, _mblen_l

mbtowc, _mbtowc_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l