Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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ängiges 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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
| 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 Multibytezeichensequenzen
_mbccpy, _mbccpy_l
mbrlen
strlen, , wcslen_mbslen, _mbslen_l, , _mbstrlen_mbstrlen_l