Partilhar via


mbrlen

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

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

Parâmetros

  • str
    Seqüência de caracteres terminada com caractere nulo.

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

  • mbstate
    O estado de mudança de conversão.

Valor de retorno

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

  • 0
    Se a próxima contagem ou bytes menos caracteres multibyte concluir que representa o NULL caractere largo.

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

  • -1
    Se os bytes de contagem seguintes contribuem para um multibyte incompleta e contagem de todos os bytes tenham sido processados.

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

Comentários

The mbrlen função determina o número de byte que constitui a sequência de caractere multibyte de str, com a capacidade de reinicialização no meio de um caractere de byte múltiplos se precisam ser, no máximo examinando maxSize byte. The mbstate_t argumento mbstate é usado para manter controle sobre o estado de deslocar. Se for nulo, mbrlen usa um estático interno, mbstate_t objeto. É equivalente à:

mbrtowc(NULL, str, maxSize, mbstate)

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

The 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 Outros funções reinicializáveis. Os resultados são indefinidos ao misturar o uso de funções nonrestartable e reinicializáveis.Por exemplo, um aplicativo utilize wcsrlen em vez de wcslen, se uma telefonar subseqüente para wcsrtombs Quando usado em vez de wcstombs.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

n/a

n/a

mbrlen

n/a

Requisitos

Rotina

Cabeçalho necessário

mbrlen

<wchar.h>

Para obter informações adicionais 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);
}

Every good boy does fine. Length: 25

Equivalente do NET Framework

sistema::String::Length

Consulte também

Referência

Manipulação de seqüência de caracteres (CRT)

Localidade