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


_mbclen, mblen, _mblen_l

Получает длину и определяет допустимость многобайтового символа.

Важно!

Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.

size_t _mbclen(
   const unsigned char *c 
);
int mblen(
   const char *mbstr,
   size_t count 
);
int _mblen_l(
   const char *mbstr,
   size_t count,
   _locale_t locale
);

Параметры

  • c
    Многобайтовый символ.

  • mbstr
    Адрес последовательности байтов многобайтового символа.

  • count
    Число байтов для проверки.

  • locale
    Языковой стандарт, который необходимо использовать.

Возвращаемое значение

_mbclen возвращает 1 или 2 в зависимости от того, составляет ли длина многобайтового символа c 1 или 2. Для _mbclen нет возвращаемой ошибки. Если mbstr не NULL, mblen возвращает длину в байтах многобайтового символа. Если mbstr имеет значение NULL или на расширенный нулевой символ, то mblen возвращает 0. Если объект, на который указывает mbstr не формирует многобайтовый символ первым count байтов, mblen возвращает –1.

Заметки

Функция _mbclen возвращает длину в байтах многобайтового символа c. Если c не указывает на старший байт многобайтового символа, что определяется неявным вызовом _ismbblead, результат _mbclen невозможно предсказать.

mblen возвращает длину в байтах mbstr, если это допустимый многобайтовый символ и определено, что многобайтовый символ правильно связан с кодовой страницей. mblen проверяет count или меньшее число байтов, содержащихся в mbstr, но не более, чем MB_CUR_MAX байтов.

Выходное значение зависит от настройки категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale. Версии этих функций без суффикса _l используют текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта; версии с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта. Для получения дополнительной информации см. Языковой стандарт.

Универсальное текстовое сопоставление функций

Подпрограмма Tchar.h

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_tclen

Сопоставляется макросу или встроенной функции

_mbclen

Сопоставляется макросу или встроенной функции

Требования

Подпрограмма

Обязательный заголовок

_mbclen

<mbstring.h>

mblen

<stdlib.h>

_mblen_l

<stdlib.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_mblen.c
/* illustrates the behavior of the mblen function
 */

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc = (char *)malloc( sizeof( char ) );
    wchar_t  wc   = L'a';

    printf( "Convert 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 );

    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );

    pmbc = NULL;
    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}

Output

Convert wide character to multibyte character:
  Characters converted: 1
  Multibyte character: 61

Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Классификация символов

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

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

_mbccpy, _mbccpy_l

strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l