_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.
Valor retornado
_mbclen
e _mbclen_l
retornar 1 ou 2, de acordo com o comprimento do caractere c
multibyte . As funções sempre retornam 1 para UTF-8, seja c
multibyte ou não. Não há retorno de erro para _mbclen
.
Se mbstr
não NULL
for e mblen
_mblen_l
retornar o comprimento, em bytes, do caractere multibyte. As mblen
funções and _mblen_l
funcionam corretamente em UTF-8 e podem retornar um valor entre 1 e 3. Quando mbstr
é NULL
(ou aponta para o caractere nulo de caractere largo) mblen
e _mblen_l
retorna 0. O objeto que mbstr
aponta para 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 aponta para o byte inicial 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 pela configuração de LC_CTYPE
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 com sufixo se comportam da mesma forma, mas usam o parâmetro locale passado. Para obter mais informações, consulte setlocale
e Localidade.
_mbclen
, _mblen_l
e _mbclen_l
são específicos da Microsoft, nã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 o padrão C, 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, confira Estado global no 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 personagens
Localidade
Interpretação de sequências de caracteres multibyte
_mbccpy
, _mbccpy_l
mbrlen
strlen
, wcslen
, _mbslen
, _mbslen_l
, _mbstrlen
, , _mbstrlen_l