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