Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przekonwertuj znak wielobajtowy na odpowiadający mu szeroki znak.
Składnia
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 szerokiego znaku (typ wchar_t).
mbchar
Adres sekwencji bajtów (znak wielobajtowy).
count
Liczba bajtów do sprawdzenia.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Jeśli mbchar nie NULLma wartości , a jeśli mbchar wskazuje prawidłowy znak wielobajtowy, mbtowc zwraca długość w bajtach znaku wielobajtowego. Jeśli mbchar znak NULL ma wartość null (L'\0), funkcja zwraca wartość 0. Jeśli obiekt, który mbchar wskazuje, nie tworzy prawidłowego znaku wielobajtowego w pierwszych count znakach, zwraca wartość -1.
Uwagi
Funkcja mbtowc konwertuje count lub mniej bajtów wskazywanych przez mbchar, jeśli mbchar nie NULLma znaku , do odpowiedniego znaku szerokiego. mbtowc przechowuje wynikowy szeroki znak wchar , jeśli wchar nie NULLjest . mbtowc nie sprawdza więcej niż MB_CUR_MAX bajtów. mbtowc używa bieżących ustawień regionalnych dla zachowania zależnego od ustawień regionalnych; _mbtowc_l jest identyczna, z tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
mbtowc |
<stdlib.h> |
_mbtowc_l |
<stdlib.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Wszystkie wersje bibliotek czasu wykonywania języka 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 );
}
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
Zobacz też
Konwersja danych
MultiByteToWideChar
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
_mbclen, , mblen_mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l