Sdílet prostřednictvím


mbrlen

Určete počet bajtů v řetězci, díky možnosti restartování uprostřed vícebajtových znaků, pokud nemusí být při použití aktuální národní prostředí.

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

Parametry

  • str
    Řetězec zakončený hodnotou Null.

  • maxSize
    Maximální velikost řetězce, s výjimkou ukončujícím znakem null.

  • mbstate
    Stav převodu shift.

Vrácená hodnota

Pokud řetězec je menší než maxSize znaků, každá z těchto funkcí vrátí počet znaků v str, s výjimkou terminálu NULL.Pokud je větší než řetězec maxSize znaků, pak maxSize je vrácena.

  • 0
    Pokud vícebajtových znaků, představující dokončit další počítání nebo méně bajtů NULL šířku znaku.

  • > 0
    Pokud platné vícebajtové znakové dokončit další počítání nebo méně bajtů, vrácená hodnota je počet bajtů, které dokončí vícebajtových znaků.

  • -1
    Pokud další počet bajtů přispět k neúplné vícebajtové a byly zpracovány všechny počet bajtů.

  • -2
    Pokud dojde k chybě kódování, v případě dalšího počítání nebo méně bajtů nepřispívají k úplné a platné vícebajtové znakové hodnoty kód chyby bude EILSEQ a převod stát dvojznačný.

Poznámky

mbrlen Funkce určuje počet bajtů, které tvoří vícebajtové znakové sekvence str, s možností restartování uprostřed vícebajtové znaky, pokud třeba, kontrole nejvíce maxSize bajtů.mbstate_t Argument mbstate se používá ke sledování stavu shift.Pokud je NULL, mbrlen používá internal, static mbstate_t objektu.Je ekvivalentní:

mbrtowc(NULL, str, maxSize, mbstate)

Pokud případ mbstate je NULL, mbrlen vychází ze své vlastní statické vnitřní mbstate_t objekt pro sledování stavu shift.

mbrlen Funkce se liší od _mbclen, mblen, _mblen_l podle jeho restartability.Stav převodu je uložen v mbstate pro následné volání na stejné nebo jiné funkce s možností restartování.Výsledky nedefinované při použití funkce restartování a nonrestartable.Například použít aplikaci wcsrlen namísto wcslen, pokud následné volání wcsrtombs namísto použitíwcstombs.

Obecný Text rutinní mapování

TCHAR.Rutina H

_UNICODE & _MBCS není definován

_MBCS, definice

_UNICODE, definice

n/a

n/a

mbrlen

n/a

Požadavky

Rutina

Požadované záhlaví

mbrlen

<wchar.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

// 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);
}
  
  

Ekvivalent v rozhraní .NET Framework

System::String::length

Viz také

Referenční dokumentace

Manipulaci s řetězci (CRT)

Národní prostředí