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.