Udostępnij za pośrednictwem


mbtowc, _mbtowc_l

Konwertowanie znaków wielobajtowych do odpowiedniego szerokich znaków.

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

Parametry

  • WCHAR
    Adres szerokich znaków (typu wchar_t).

  • mbchar
    Adres sekwencji bajtów (znaków wielobajtowych).

  • Licznik
    Liczba bajtów do sprawdzenia.

  • Ustawienia regionalne
    Ustawienia regionalne, aby użyć.

Wartość zwracana

Jeśli mbchar nie jest NULL oraz jeśli obiekt, mbchar punkty do formularzy prawidłowych znaków wielobajtowych, mbtowc zwraca długość w bajtach znaków wielobajtowych.Jeśli mbchar jest NULL lub obiekt, który wskazuje jest znakiem null szerokich znaków (L '\0'), funkcja zwraca wartość 0.Jeśli obiekt, mbchar punktów nie stanowi prawidłowych znaków wielobajtowych w pierwszym liczba znaków, zwraca –1.

Uwagi

mbtowc Działać konwertuje liczba lub mniejszą liczbę bajtów wskazywanej przez mbchar, jeśli mbchar nie jest NULL, na odpowiadające im szerokich znaków.mbtowcprzechowuje wynikowy szerokiego znaku na wchar, Jeśli wchar nie jest NULL.mbtowczbadać nie więcej niż MB_CUR_MAX bajtów. mbtowc wykorzystuje bieżące ustawienia regionalne dla zachowania zależnego od ustawień regionalnych; _mbtowc_ljest identyczny z wyjątkiem, że korzysta z ustawień regionalnych, przekazany w zamian.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

mbtowc

<stdlib.h>

_mbtowc_l

<stdlib.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje biblioteki uruchomieniowej c.

Przykład

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

Dane wyjściowe

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

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Konwersja danych

MultiByteToWideChar

Ustawienia regionalne

Interpretacja sekwencje znaków wielobajtowych

_mbclen, mblen, _mblen_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l