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