_mbclen
, mblen
, , _mblen_l
, _mbclen_l
Obtiene la longitud y determina la validez de un carácter multibyte.
Importante
Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
size_t _mbclen(
const unsigned char *c
);
size_t _mbclen_l(
unsigned char const* c,
_locale_t locale
);
int mblen(
const char *mbstr,
size_t count
);
int _mblen_l(
const char *mbstr,
size_t count,
_locale_t locale
);
Parámetros
c
Carácter multibyte.
mbstr
Dirección de una secuencia de bytes de caracteres multibyte.
count
Número de bytes que se va a comprobar.
locale
Configuración regional que se va a usar.
Valor devuelto
_mbclen
y _mbclen_l
devuelven 1 o 2, según la longitud del carácter c
multibyte . Las funciones siempre devuelven 1 para UTF-8, ya sea c
multibyte o no. No se devuelve ningún error para _mbclen
.
Si mbstr
no NULL
es y mblen
_mblen_l
devuelve la longitud, en bytes, del carácter multibyte. Las mblen
funciones y _mblen_l
funcionan correctamente en UTF-8 y pueden devolver un valor entre 1 y 3. Cuando mbstr
es NULL
(o apunta al carácter NULL de caracteres anchos) mblen
y _mblen_l
devuelve 0. El objeto que mbstr
apunta a debe formar un carácter multibyte válido dentro de los primeros count
caracteres o mblen
devolver _mblen_l
-1.
Comentarios
La función _mbclen
devuelve la longitud, en bytes, del carácter multibyte c
. Si c
no apunta al byte principal de un carácter multibyte (determinado por una llamada implícita a _ismbblead
, el resultado de _mbclen
es impredecible.
mblen
devuelve la longitud en bytes de mbstr
si es un carácter multibyte válido. También determina la validez del carácter multibyte asociada a la página de códigos. mblen
examina count
bytes o menos de mbstr
, pero no más MB_CUR_MAX
bytes.
El valor de salida se ve afectado por el LC_CTYPE
valor de categoría de la configuración regional. Las versiones de estas funciones sin el sufijo _l
utilizan la configuración regional actual en el comportamiento que depende de esta configuración regional. Las _l
versiones sufijos se comportan igual, pero usan el parámetro de configuración regional pasado en su lugar. Para obtener más información, consulte setlocale
y Configuración regional.
_mbclen
, _mblen_l
y _mbclen_l
son específicos de Microsoft, no forman parte de la biblioteca estándar de C. No se recomienda usarlos donde quiera que haya código portátil. Para la compatibilidad con C estándar, use mblen
o mbrlen
en su lugar.
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.
Asignaciones de rutinas de texto genérico
Rutina Tchar.h | _UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tclen |
Se asigna a una macro o una función insertada | _mbclen |
Se asigna a una macro o una función insertada |
Requisitos
Routine | Encabezado necesario |
---|---|
_mbclen |
<mbstring.h> |
mblen |
<stdlib.h> |
_mblen_l |
<stdlib.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_mblen.c
/* illustrates the behavior of the mblen function
*/
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int i;
char *pmbc = (char *)malloc( sizeof( char ) );
wchar_t wc = L'a';
printf( "Convert wide character to multibyte character:\n" );
wctomb_s( &i, pmbc, sizeof(char), wc );
printf( " Characters converted: %u\n", i );
printf( " Multibyte character: %x\n\n", *pmbc );
i = mblen( pmbc, MB_CUR_MAX );
printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );
pmbc = NULL;
i = mblen( pmbc, MB_CUR_MAX );
printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Convert wide character to multibyte character:
Characters converted: 1
Multibyte character: 61
Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0
Vea también
Clasificación de caracteres
Configuración regional
Interpretación de secuencias de caracteres de varios bytes
_mbccpy
, _mbccpy_l
mbrlen
strlen
, wcslen
, _mbslen
, _mbslen_l
, , _mbstrlen
, _mbstrlen_l