当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 mbrlen用法及代码示例


C语言wchar头文件(wchar.h)中mbrlen函数的用法及代码示例。

用法:

size_t mbrlen (const char* pmb, size_t max, mbstate_t* ps);
获取多字节字符的长度
返回由指向的多字节字符的大小mb最多检查最大限度个字节。

该函数使用(并更新)由以下内容描述的换档状态ps。如果ps是一个空指针,该函数使用其自己的内部换档状态,只有在调用此函数时才需要进行更改。

使用空指针作为对函数的调用mb重置换档状态(并忽略参数最大限度)。

此函数的行为取决于LC_CTYPE所选类别C语言环境

这是可重启的版本mblen(<cstdlib>)。

参数

pmb
指向多字节字符的第一个字节的指针。
或者,可以使用空指针调用该函数,在这种情况下,该函数将重置移位状态(ps(或它自己的内部状态)返回初始状态,并返回零。
max
要检查的最大字节数。
宏常量MB_CUR_MAX定义在当前语言环境设置下可以形成多字节字符的最大字节数。
size_t是无符号整数类型。
ps
指向一个指针mbstate_t定义转换状态的对象。

返回值

如果mb指向一个空字符,或者mb是一个空指针,该函数返回零。

否则,如果最多最大限度所指向的字符mb如果形成一个有效的多字节字符,该函数将返回该多字节字符的大小(以字节为单位)。

否则,如果最多最大限度字符不构成一个有效的多字节字符,该函数返回(size_t)-1和集errnoEILSEQ

否则,如果最大限度字符导致不完整(但可能有效)的多字节字符,该函数将返回(size_t)-2

注意size_t是无符号整数类型,因此可能返回的值都不小于零。

示例

/* mbrlen example */
#include <stdio.h>
#include <string.h>
#include <wchar.h>

void splitmb (const char* pt, size_t max)
{
  size_t length;
  wchar_t dest;
  mbstate_t mbs;
  int i;

  mbrlen (NULL,0,&mbs);  /* initialize state */

  while (max>0) {
    length = mbrlen (pt, max, &mbs);
    if ((length==0)||(length>max)) break;
    putchar ('[');
    for (i=0; i<length; ++i) putchar (*pt++);
    putchar (']');
    max-=length;
  }
}

int main()
{
  const char str [] = "test string";

  splitmb (str,sizeof(str));

  return 0;
}


函数splitmb将一个多字节序列分成若干字节组,这些字节组构成每个字符。

该示例在"C"语言环境,但是该函数支持支持多字节字符串的语言环境。

输出:

[t][e][s][t][ ][s][t][r][i][n][g]

相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C mbrlen function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。