_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 c
wielobajtowego . 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 NULL
ma 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_l
mblen
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ą. mblen
count
sprawdza lub mniej bajtów zawartych w mbstr
obiekcie , 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_l
i _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 zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tclen |
Mapuje na makro lub funkcję śródliniową | _mbclen |
Mapuje na makro lub funkcję śródliniową |
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