Share via


_mbclen, mblen, _mblen_l, _mbclen_l

Získá délku a určuje platnost vícebajtového znaku.

Důležité

Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.

Syntaxe

size_t _mbclen(
   const unsigned char *c
);
size_t _mbclen_l(
   unsigned char const* c,
   _locale_t locale
);
int mblen(
   const char *mbstr,
   size_t count
);
int _mblen_l(
   const char *mbstr,
   size_t count,
   _locale_t locale
);

Parametry

c
Vícebajtový znak.

mbstr
Adresa vícebajtové sekvence bajtů.

count
Počet bajtů, které chcete zkontrolovat.

locale
Národní prostředí, které se má použít.

Vrácená hodnota

_mbclen a _mbclen_l vrátí hodnotu 1 nebo 2 podle délky vícebajtového znaku c. Funkce vždy vrací hodnotu 1 pro UTF-8 bez ohledu na to, jestli c je vícebajtová, nebo ne. Neexistuje žádná chyba, která _mbclenby se vrátila .

Pokud mbstr není NULL, mblen a _mblen_l vrátí délku vícebajtového znaku v bajtech. Funkce mblen fungují _mblen_l správně u UTF-8 a můžou vrátit hodnotu mezi 1 a 3. Pokud mbstr je ( NULL nebo odkazuje na znak null širokého znaku) mblen a _mblen_l vrátí hodnotu 0. Objekt, který mbstr odkazuje na to, musí vytvořit platný vícebajtový znak v rámci prvních count znaků nebo mblen vrátit _mblen_l -1.

Poznámky

Funkce _mbclen vrátí délku vícebajtového znaku cv bajtech . Pokud c neodkazuje na hlavní bajt vícebajtového znaku (jak je určeno implicitním voláním _ismbblead, výsledek _mbclen je nepředvídatelný.

mblen vrátí délku v bajtech mbstr , pokud se jedná o platný vícebajtový znak. Určuje také platnost vícebajtového znaku přidružená ke znakové stránce. mblencount zkoumá nebo méně bajtů obsažených v mbstr, ale ne více než MB_CUR_MAX bajty.

Výstupní hodnota je ovlivněna LC_CTYPE nastavením kategorie národního prostředí. Verze těchto funkcí bez _l přípony používají aktuální národní prostředí pro toto chování závislé na národním prostředí. Verze _l s příponou se chovají stejně, ale místo toho používají parametr národního prostředí předaný. Další informace najdete v tématu setlocale a národním prostředí.

_mbclen, _mblen_la _mbclen_l jsou specifické pro Microsoft, nikoli součást standardní knihovny jazyka C. Nedoporučujeme je používat tam, kde chcete přenosný kód. Pro kompatibilitu standardního jazyka C použijte mblen nebo mbrlen místo toho.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Rutina Tchar.h _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tclen Mapy na makro nebo vloženou funkci _mbclen Mapy na makro nebo vloženou funkci

Požadavky

Rutina Požadovaný hlavičkový soubor
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// crt_mblen.c
/* illustrates the behavior of the mblen function
*/

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc = (char *)malloc( sizeof( char ) );
    wchar_t  wc   = L'a';

    printf( "Convert wide character to multibyte character:\n" );
    wctomb_s( &i, pmbc, sizeof(char), wc );
    printf( "   Characters converted: %u\n", i );
    printf( "   Multibyte character: %x\n\n", *pmbc );

    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );

    pmbc = NULL;
    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Convert wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0

Viz také

Klasifikace znaků
Národní prostředí
Interpretace vícebajtových sekvencí znaků
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l