_mbclen, mblen, _mblen_l, _mbclen_l

Pobiera długość i określa ważność znaku wielobajtowego.

Ważne

Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

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
Znak wielobajtowy.

mbstr
Adres sekwencji bajtów wielobajtowych.

count
Liczba bajtów do sprawdzenia.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

_mbclen i _mbclen_l zwraca wartość 1 lub 2, zgodnie z długością znaku cwielobajtowego . Funkcje zawsze zwracają wartość 1 dla protokołu UTF-8, niezależnie od tego, czy c jest wielobajtowy, czy nie. Nie jest zwracany błąd dla elementu _mbclen.

Jeśli mbstr nie NULLma wartości , mblen i _mblen_l zwraca długość w bajtach znaku wielobajtowego. Funkcje mblen i _mblen_l działają poprawnie w formacie UTF-8 i mogą zwracać wartość z zakresu od 1 do 3. Gdy mbstr wartość to NULL (lub wskazuje znak o wartości null w szerokim znaku) mblen i _mblen_l zwraca wartość 0. Obiekt, który mbstr wskazuje, musi utworzyć prawidłowy znak wielobajtowy w pierwszych count znakach lub _mblen_lmblen zwrócić -1.

Uwagi

Funkcja _mbclen zwraca długość w bajtach wielobajtowego znaku c. Jeśli c nie wskazuje na bajt główny znaku wielobajtowego (określony przez niejawne wywołanie metody _ismbblead, wynik _mbclen jest nieprzewidywalny.

mblen Zwraca długość w bajtach mbstr , jeśli jest to prawidłowy znak wielobajtowy. Określa również ważność wielobajtową skojarzona ze stroną kodową. mblencount sprawdza lub mniej bajtów zawartych w mbstrobiekcie , ale nie więcej niż MB_CUR_MAX bajty.

Na wartość wyjściową LC_CTYPE ma wpływ ustawienie kategorii ustawień regionalnych. Wersje tych funkcji bez sufiksu _l używają bieżących ustawień regionalnych dla tego zachowania zależnego od ustawień regionalnych. Wersje _l sufiksów zachowują się tak samo, ale używają parametru ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz setlocale i Ustawienia regionalne.

_mbclen, _mblen_li _mbclen_l są specyficzne dla firmy Microsoft, a nie są częścią standardowej biblioteki języka C. Nie zalecamy używania ich w miejscu, w którym chcesz użyć kodu przenośnego. W przypadku zgodności ze standardem C użyj polecenia mblen lub mbrlen zamiast niego.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

Procedura tchar.h _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tclen Mapy do makra lub funkcji wbudowanej _mbclen Mapy do makra lub funkcji wbudowanej

Wymagania

Procedura Wymagany nagłówek
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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

Zobacz też

Klasyfikacja znaków
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l