Поделиться через


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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Преобразование данных

MultiByteToWideChar

Языковой стандарт

Интерпретация последовательностей в многобайтной кодировке

_mbclen, mblen, _mblen_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l