mbtowc, _mbtowc_l
Преобразовывают многобайтовый символ в соответствующий расширенный символ.
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
);
Параметры
wchar
Адрес расширенного символа (типа wchar_t).mbchar
Адрес последовательности байтов (многобайтового символа).count
Число байтов для проверки.языковой стандарт
Используемый языковой стандарт.
Возвращаемое значение
Если mbchar не равно NULL и если объект, на который указывает mbchar, формирует допустимый многобайтовый символ, mbtowc возвращает длину в байтах многобайтового символа. Если mbchar равно NULL или объект, на который он указывает, - расширенный нуль-символ (L'\0), то функция возвращает 0. Если объект, на который указывает mbchar, не формирует допустимого многобайтового символа внутри первых count байтов, функция возвращает –1.
Заметки
Функция mbtowc преобразует count или меньшее число байтов, на которые указывает mbchar в соответствующий расширенный символ, если mbchar не равно NULL. mbtowc хранит результирующий расширенный символ в wchar,, если wchar не равно NULL. mbtowc на анализирует больше MB_CUR_MAX байтов. mbtowc используется текущий языковой стандарт для поведения, зависящего от языкового стандарта; _mbtowc_l идентична за исключением того, что она использует переданный языковой стандарт. Для получения дополнительной информации см. Языковой стандарт.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
mbtowc |
<stdlib.h> |
_mbtowc_l |
<stdlib.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Библиотеки
Все версии библиотек времени выполнения C.
Пример
// 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 );
}
Output
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
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.