Compartilhar via


_mbclen, mblen, _mblen_l, _mbclen_l

Obtém o comprimento e determina a validade de um caractere multibyte.

Importante

Esta API não pode ser usada em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.

Sintaxe

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
Caractere multibyte.

mbstr
Endereço de uma sequência de bytes de caracteres multibyte.

count
O número de bytes a serem verificados.

locale
Localidade a usar.

Retornar valor

_mbclen e retornar 1 ou 2, de acordo com o comprimento do caractere _mbclen_lcmultibyte . As funções sempre retornam 1 para UTF-8, seja c multibyte ou não. Não há retorno de erro para _mbcleno .

Se mbstr não NULLfor , e retorne o comprimento, em bytes, mblen do caractere _mblen_l multibyte. As mblen funções e funcionam corretamente em UTF-8 e podem retornar um valor entre 1 e _mblen_l 3. Quando mbstr é NULL (ou aponta para o caractere nulo de caractere largo) mblen e _mblen_l retorna 0. O objeto para o qual mbstr aponta deve formar um caractere multibyte válido dentro dos primeiros count caracteres ou mblen retornar _mblen_l -1.

Comentários

A função _mbclen retorna o tamanho, em bytes, do caractere multibyte c. Se c não apontar para o byte principal de um caractere multibyte (conforme determinado por uma chamada implícita para _ismbblead, o resultado de _mbclen é imprevisível.

mblen Retorna o comprimento em bytes de mbstr se for um caractere multibyte válido. Ela também determinará a validade dos caracteres multibyte associada à página de código. mblen examina count ou menos bytes contidos em mbstr, mas não mais de MB_CUR_MAX bytes.

O valor de saída é afetado LC_CTYPE pela configuração de categoria da localidade. As versões dessas funções sem o sufixo _l usam a localidade atual para esse comportamento que depende da localidade. As _l versões sufixas se comportam da mesma forma, mas usam o parâmetro de localidade passado. Para obter mais informações, consulte setlocale e Localidade.

_mbclen, e _mbclen_l são específicos da Microsoft, _mblen_lnão fazem parte da biblioteca C padrão. Não recomendamos que você as use se quiser um código portátil. Para compatibilidade com C padrão, use mblen ou mbrlen em vez disso.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.

Mapeamentos de rotina de texto genérico

Rotina Tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tclen É mapeado para um macro ou uma função embutida _mbclen É mapeado para um macro ou uma função embutida

Requisitos

Rotina Cabeçalho necessário
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Classificação de caracteres
Localidade
Interpretação de sequências de caracteres multibyte
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l