mbrlen

Укажите число байтов в строке, с возможностью перезапуска в середине многобайтового символов при необходимости, то при использовании текущий языковой стандарт.

size_t mbrlen(
   const char *str,
   size_t maxSize,
   mbstate_t mbstate
);

Параметры

  • str
    Null-завершенная строка.

  • maxSize
    Максимальный размер строки, исключая конечное нуль-символа.

  • mbstate
    состояние переноса преобразования.

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

Если строка меньше maxSize символы длины, в каждой из этих функций возвращают количество символов в str, за исключением терминалов NULL.Если строка больше maxSize символы длины, после чего maxSize возвращает.

  • 0
    Если следующий число или меньше байтов, завершаются многобайтовый, который представляет символ NULL расширенный символ.

  • > 0
    Если следующий число или меньше байтов, завершаются допустимый символ многобайтовый, возвращенное значение число байтов, которые завершаются многобайтовый символ.

  • -1
    Если количество участвуют в следующих байт, обработанных неполное multibyte и все байты числа.

  • -2
    Если ошибка кодирования, то в этом случае следующий число или меньшее число байтов не участвуют в полный и допустимы многобайтовый символ значение errno значения будет EILSEQ и состоянием преобразования неоднозначным.

Заметки

mbrlen функция определяет число байтов, образовывая последовательность символов многобайтового strс возможностью перезапуска в середине знака multi-байта если требуется, по крайней мере, представляя maxSize байты.mbstate_t аргумент mbstate используется для отслеживания состояния миграции.Если он имеет значение null, структура mbrlen использует внутреннюю статическим mbstate_t объект.Он эквивалентен следующему:

mbrtowc(NULL, str, maxSize, mbstate)

За исключением случаев, когда случай mbstate существует NULL" mbrlen полагает на собственное статическом, internal mbstate_t объект для отслеживания состояния миграции.

mbrlen функция отличается от _mbclen, mblen, _mblen_l по restartability.Состояние преобразования сохраняется в пределах mbstate для последующих вызовов этой же или другой прерываемый функциям.Смешивание использование результаты не определены прерываемых и nonrestartable функций.Например, приложение использовал бы wcsrlen вместо wcslenесли последующий вызов wcsrtombs где используется вместо wcstombs.

Сопоставления подпрограммы Родов-Текста

Подпрограмма TCHAR.H

_MBCS не заданные _UNICODE &

Указанный символ _MBCS

Указанный _UNICODE

n/a

n/a

mbrlen

n/a

Требования

Процедура

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

mbrlen

<wchar.h>

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

Пример

// crt_mbrlen.c

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

size_t Example(const char * pStr)
{
    size_t      charLen = 0;
    size_t      charCount = 0;
    mbstate_t   mbState;

    memset(&mbState, 0, sizeof(mbState));
    
    while ((charLen = mbrlen(pStr, MB_CUR_MAX, &mbState)) != 0 &&
            charLen != (size_t)-1 && charLen != (size_t)-2)
    {
        pStr += charLen;
        charCount++;
    } 

    return (charCount);
} 

int main( void )
{
    size_t      charCount = 0;
    const char  *pSample = "Every good boy does fine.";

    charCount = Example(pSample);
    printf("%s\nLength: %d\n", pSample, charCount);
}
  
  

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

System:: строка:: длина

См. также

Ссылки

Управление строками (CRT)

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