_mbclen, mblen, _mblen_l, _mbclen_l

Ruft die Länge ab und bestimmt die Gültigkeit eines Multibytezeichens.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

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

Parameter

c
Multibytezeichen.

mbstr
Adresse einer Multibytezeichen-Bytesequenz.

count
Anzahl zu überprüfender Bytes.

locale
Zu verwendendes Gebietsschema.

Rückgabewert

_mbclen und _mbclen_l gibt 1 oder 2 gemäß der Länge des Multibyte-Zeichens czurück. Die Funktionen geben immer 1 für UTF-8 zurück, unabhängig davon, ob c es sich um Multibyte handelt. Es wird kein Fehler zurückgegeben für _mbclen.

Ist mbstr dies nicht NULLmblen der Fehler, und _mblen_l geben Sie die Länge des Multibyte-Zeichens in Byte zurück. Die mblen Funktionen funktionieren _mblen_l ordnungsgemäß in UTF-8 und können einen Wert zwischen 1 und 3 zurückgeben. Ist mbstr der NULL Wert (oder zeigt es auf das zeichenweite Nullzeichen) mblen und _mblen_l gibt "0" zurück. Das Objekt, auf das verweist, mbstr muss innerhalb der ersten count Zeichen ein gültiges Multibytezeichen bilden oder mblen_mblen_l -1 zurückgeben.

Hinweise

Die _mbclen-Funktion gibt die Länge des Multibytezeichens c in Byte zurück. Wenn c nicht auf das Leadbytebyte-Byte eines Multibyte-Zeichens zeigt (wie durch einen impliziten Aufruf _ismbbleadbestimmt, ist das Ergebnis _mbclen unvorhersehbar.

mblen gibt die Länge in Byte zurück, wenn mbstr es sich um ein gültiges Multibytezeichen handelt. Außerdem wird die Gültigkeit von Multibyte-Zeichen bestimmt, die der Codepage zugeordnet ist. mblen untersucht count oder weniger Byte, die in mbstr enthalten sind, jedoch nicht mehr als MB_CUR_MAX Byte.

Der Ausgabewert wird von der LC_CTYPE Kategorieeinstellung des Gebietsschemas beeinflusst. Die Versionen dieser Funktionen ohne das _l Suffix verwenden das aktuelle Gebietsschema für dieses gebietsschemaabhängige Verhalten. Die _l suffixierten Versionen verhalten sich gleich, verwenden aber stattdessen den gebietsschemaparameter, der übergeben wird. Weitere Informationen finden Sie unter setlocale " Gebietsschema".

_mbclen, _mblen_lund _mbclen_l sind Microsoft-spezifisch, nicht Teil der Standard-C-Bibliothek. Es wird nicht empfohlen, sie an der Stelle zu verwenden, an der Sie portablen Code benötigen. Verwenden Oder mbrlen verwenden Sie mblen stattdessen die Standard-C-Kompatibilität.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

Tchar.h-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tclen Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus _mbclen Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus

Anforderungen

Routine Erforderlicher Header
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Zeichenklassifizierung
Gebietsschema
Interpretation von Multibyte-Zeichensequenzen
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l