mbrlen

在多字节字符的元确定中的字节数一个字符串,以重新启动的功能,如果需要,在使用当前区域设置。

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

参数

  • str
    null 终止的字符串。

  • maxSize
    字符串的最大大小,不包括终止 null 字符。

  • mbstate
    转换 shift 状态。

返回值

如果该字符串的长度 maxSize 字符小于,这些函数都返回一个字符数。 str的,不包括最终 NULL。 如果该字符串的长度 maxSize 字符大,则 maxSize 返回。

  • 0
    如果下次数或更低字节完成表示 NULL 宽字符的多字节字符。

  • > 0
    如果下次数或更低字节完成有效的多字节字符,返回的值是完成多字节字符的字节数。

  • -1
    如果下一个计数字节导致不完整的多字节和所有计数字节处理。

  • -2
    如果编码错误,,在下次数或更低字节不会导致完整有效的多字节字符情况下,值 errno 值将为 EILSEQ 和不明确转换的状态。

备注

mbrlen 函数确定构成 str的多字节字符序列的字节数,当重新启动的功能在多字节字符的元如果需要,检查最多 maxSize 字节。 mbstate_t 参数 mbstate 用于跟踪 shift 状态。 如果是空, mbrlen 使用内部,静态 mbstate_t 对象。 它等效于:

mbrtowc(NULL, str, maxSize, mbstate)

除,当用例 mbstate 是 NULL, mbrlen 取决于其自己的静态,内部 mbstate_t 对象记录 shift 状态。

mbrlen 功能与 _mbclen, mblen, _mblen_l 不同由其 restartability。 转换状态中的 mbstate 存储的后续调用相同或其他可重新启动的功能。 ,混合使用可重新启动和 nonrestartable 函数时,结果是未定义的。 例如,因此,如果以后对 wcsrtombs 效果位置而不是 wcstombs.,应用程序将使用 wcsrlen 而不是 wcslen

一般文本例程映射

TCHAR.H 实例

未定义的 _UNICODE _MBCS

定义的 _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 等效项

系统:: 字符串:: 长度

请参见

参考

字符串操作(crt)

区域设置