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 mbcharmbcharNULLgibt 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 mbcharauf 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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Anforderungen

Routine Erforderlicher Header
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>

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

Bibliotheken

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 Multibyte-Zeichensequenzen
_mbclen, mblen, _mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l