mbrlen

Determine o número de bytes em uma seqüência de caracteres, com a capacidade de reinicialização no meio de um caracteres multibyte, se necessário, enquanto estiver usando a localidade atual.

size_t mbrlen(
   const char *str,
   size_t maxSize,
   mbstate_t mbstate
);

Parâmetros

  • str
    Seqüência terminada por caractere nulo.

  • maxSize
    O tamanho máximo da seqüência de caracteres, excluindo o caractere nulo de terminação.

  • mbstate
    O estado de shift de conversão.

Valor de retorno

Se a seqüência for menor do que maxSize caracteres de comprimento, cada uma dessas funções retorna o número de caracteres em str, excluindo o terminal NULL.Se a seqüência de caracteres é maior do que maxSize caracteres de comprimento, em seguida, maxSize é retornado.

  • 0
    Se a contagem do próxima ou menos bytes conclua os caracteres multibyte que representa o NULL caracteres largos.

  • > 0
    Se a contagem do próxima ou menos bytes concluir um caractere multibyte válido, o valor retornado é o número de bytes que completam a caracteres multibyte.

  • -1
    Se os bytes de contagem próximo contribuem para um multibyte incompleto e todos os bytes de contagem foram processados.

  • -2
    Se ocorrer um erro de codificação, caso em que a próxima contagem ou menos bytes não contribuem para os caracteres multibyte completo e válido, o valor de errno valor será EILSEQ e o estado de conversão ambíguo.

Comentários

O mbrlen função determina o número de bytes que constitui a seqüência de caracteres multibyte de str, com a capacidade de reinicialização no meio de um caractere de vários bytes, se precisar ser, examinando no máximo maxSize bytes.O mbstate_t argumento mbstate é usado para controlar o estado de shift.Se for NULL, mbrlen usa um estático interno, mbstate_t objeto.É equivalente a:

mbrtowc(NULL, str, maxSize, mbstate)

Exceto quando o caso de mbstate é NULL, mbrlen depende de seu próprio estática, interna mbstate_t o objeto para controlar o estado de shift.

O mbrlen função difere _mbclen, mblen, _mblen_l por sua capacidade de reinicialização.O estado de conversão é armazenado em mbstate para chamadas subseqüentes para o mesmo ou outras funções reinicializáveis.Os resultados são indefinidos ao combinar o uso de funções reiniciáveis e não reiniciável.Por exemplo, um aplicativo deve usar wcsrlen em vez de wcslen, se uma chamada subseqüente para wcsrtombs onde usado em vez dewcstombs.

Mapeamentos de rotina de texto genérico

TCHAR.Rotina H

_ Unicode & _ MBCS do arquivo não definido

_ MBCS do arquivo definido

_ Unicode definido

n/a

n/a

mbrlen

n/a

Requisitos

Rotina

Cabeçalho necessário

mbrlen

<wchar.h>

Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.

Exemplo

// crt_mbrlen.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>

size_t Example(const char * pStr)
{
    size_t      charLen = 0;
    size_t      charCount = 0;
    mbstate_t   mbState;

    memset(&mbState, 0, sizeof(mbState));
    
    while ((charLen = mbrlen(pStr, MB_CUR_MAX, &mbState)) != 0 &&
            charLen != (size_t)-1 && charLen != (size_t)-2)
    {
        pStr += charLen;
        charCount++;
    } 

    return (charCount);
} 

int main( void )
{
    size_t      charCount = 0;
    const char  *pSample = "Every good boy does fine.";

    charCount = Example(pSample);
    printf("%s\nLength: %d\n", pSample, charCount);
}
  
  

Equivalência do .NET Framework

System::String::length

Consulte também

Referência

Manipulação de cadeia de caracteres (CRT)

Localidade