mbtowc
, _mbtowc_l
Konvertieren von Multibytezeichen in entsprechendes Breitzeichen.
Syntax
int mbtowc(
wchar_t *wchar,
const char *mbchar,
size_t count
);
int _mbtowc_l(
wchar_t *wchar,
const char *mbchar,
size_t count,
_locale_t locale
);
Parameter
wchar
Adresse eines Breitzeichens (Typ wchar_t
).
mbchar
Adresse einer Sequenz von Bytes (ein Multibytezeichen).
count
Anzahl zu überprüfender Bytes.
locale
Das zu verwendende Gebietsschema.
Rückgabewert
Andernfalls mbchar
mbchar
NULL
gibt die Länge des Multibyte-Zeichens mbtowc
in Bytes des Multibyte-Zeichens zurück. Wenn mbchar
es NULL
sich um ein Breitzeichen-NULL-Zeichen (L'\0') handelt oder zeigt, gibt die Funktion 0 zurück. Wenn das Objekt, auf das verweist, mbchar
kein gültiges Multibytezeichen innerhalb der ersten count
Zeichen bildet, wird -1 zurückgegeben.
Hinweise
Die mbtowc
Funktion konvertiert count
oder weniger Bytes, die mbchar
auf ein entsprechendes breites Zeichen verweisen, wenn mbchar
nicht NULL
. mbtowc
speichert das resultierende breite Zeichen bei Wchar, wenn wchar
nicht NULL
. mbtowc
untersucht nicht mehr als MB_CUR_MAX
Bytes. mbtowc
verwendet das aktuelle Gebietsschema für jedes Verhalten, das vom Gebietsschema abhängig ist; _mbtowc_l
ist identisch, nur dass sie stattdessen das übergebene Gebietsschema verwendet. Weitere Informationen finden Sie unter Locale.
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.
Anforderungen
Routine | Erforderlicher Header |
---|---|
mbtowc |
<stdlib.h> |
_mbtowc_l |
<stdlib.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Libraries
Alle Versionen der C-Laufzeitbibliotheken.
Beispiel
// crt_mbtowc.c
// Illustrates the behavior of the mbtowc function
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int i;
char *pmbc = (char *)malloc( sizeof( char ) );
wchar_t wc = L'a';
wchar_t *pwcnull = NULL;
wchar_t *pwc = (wchar_t *)malloc( sizeof( wchar_t ) );
printf( "Convert a 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 );
printf( "Convert multibyte character back to a wide "
"character:\n" );
i = mbtowc( pwc, pmbc, MB_CUR_MAX );
printf( " Bytes converted: %u\n", i );
printf( " Wide character: %x\n\n", *pwc );
printf( "Attempt to convert when target is NULL\n" );
printf( " returns the length of the multibyte character:\n" );
i = mbtowc( pwcnull, pmbc, MB_CUR_MAX );
printf( " Length of multibyte character: %u\n\n", i );
printf( "Attempt to convert a NULL pointer to a" );
printf( " wide character:\n" );
pmbc = NULL;
i = mbtowc( pwc, pmbc, MB_CUR_MAX );
printf( " Bytes converted: %u\n", i );
}
Convert a wide character to multibyte character:
Characters converted: 1
Multibyte character: 61
Convert multibyte character back to a wide character:
Bytes converted: 1
Wide character: 61
Attempt to convert when target is NULL
returns the length of the multibyte character:
Length of multibyte character: 1
Attempt to convert a NULL pointer to a wide character:
Bytes converted: 0
Siehe auch
Datenkonvertierung
MultiByteToWideChar
Gebietsschema
Interpretation von Multibytezeichensequenzen
_mbclen
, mblen
_mblen_l
wcstombs
, _wcstombs_l
wctomb
, _wctomb_l