Sdílet prostřednictvím


mbrlen

Zjistěte počet bajtů, které jsou nezbytné pro dokončení více znak v aktuální národní prostředí s možností restartování uprostřed více znaků.

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

Parametry

  • str
    Ukazatel na další bajtu, chcete-li prověřit v řetězec více znaků.

  • count
    Maximální počet bajtů, které mají zkontrolovat.

  • mbstate
    Ukazatel na aktuální stav shift počáteční bajtu str.

Vrácená hodnota

Jeden z následujících hodnot:

  • 0
    Další count nebo méně bajtů dokončit více znak, který představuje široký znak null.

  • 1 count, včetně
    Další count nebo méně bajtů dokončení platný více znak.Hodnota vrácená je počet bajtů, které dokončit více znaků.

  • (size_t)-(2)
    Další count bajtů přispívají k nekompletní, ale potenciálně platný více znaků a všechny count byly zpracovány bajtů.

  • (size_t)(-1)
    Došlo k chybě kódování.Další count nebo méně bajtů není k němu přispět úplnou a platnou více znaků.V takovém případě errno je nastavena na EILSEQ a se stavem převodu v mbstate neurčená.

Poznámky

mbrlen Funkce zkontroluje, zda obsahuje maximálně count bajtů počínaje bajtu na kterou odkazuje str určit počet bajtů, které jsou vyžadovány k dokončení více další znak, včetně všech sekvencí shift.Je ekvivalentní volání funkce mbrtowc(NULL, str, count, &mbstate) kde mbstate je buď zadaný uživatelem mbstate_t , nebo statické vnitřní objekt poskytované knihovny.

mbrlen Funkce uloží a použije stav shift nekompletní vícebajtový v mbstate parametru.Díky tomu mbrlen schopnost restartování uprostřed více znaků, pokud je třeba, zkoušení maximálně count bajtů.Pokud mbstate je ukazatel s hodnotou null, mbrlen používá interní, statické mbstate_t objekt pro uložení stavu shift.Protože interní mbstate_t objekt není vláken, doporučujeme, abyste vždy přidělit a předat své vlastní mbstate parametru.

mbrlen Funkce se liší od _mbclen, mblen, _mblen_l podle jeho restartability.Stav shift je uložen v mbstate pro následné volání stejné nebo jiné funkce s možností restartování.Výsledky nedefinované při použití s možností restartování a nonrestartable funkcí.Například by měla použít aplikace wcsrlen namísto wcslen -li následných volání wcsrtombs se používá místowcstombs.

Mapování rutin obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definována.

_MBCS definováno

_UNICODE definováno

není k dispozici

není k dispozici

mbrlen

není k dispozici

Požadavky

Rutina

Požadovaný hlavičkový soubor

mbrlen

< wchar.h >

Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.

Příklad

Tento příklad ukazuje, jak výklad středník závisí na aktuální stránce kódu a ukazuje obnovením schopnost mbrlen.

 // crt_mbrlen.c
// Compile by using: cl crt_mbrlen.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <wchar.h>

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

    while ((charLen = mbrlen(pStr++, 1, &mbState)) != 0 &&
            charLen != (size_t)-1)
    {
        if (charLen != (size_t)-2) // if complete mbcs char,
        {
            charCount++;
        }
    } 
    return (charCount);
} 

int main( void )
{
    int         cp;
    size_t      charCount = 0;
    const char  *pSample = 
        "\x82\xD0\x82\xE7\x82\xAA\x82\xC8: Shift-jis hiragana.";

    cp = _getmbcp();
    charCount = Example(pSample);
    printf("\nCode page: %d\n%s\nCharacter count: %d\n", 
        cp, pSample, charCount);
    
    setlocale(LC_ALL, "ja-JP"); // Set Japanese locale
    _setmbcp(932); // and Japanese multibyte code page
    cp = _getmbcp();
    charCount = Example(pSample);
    printf("\nCode page: %d\n%s\nCharacter count: %d\n", 
        cp, pSample, charCount);
}
        

Ekvivalent v rozhraní .NET Framework

System::String::length

Viz také

Referenční dokumentace

Zacházení s řetězci (CRT)

Národní prostředí