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