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


C语言 mbrtowc用法及代码示例


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

用法:

size_t mbrtowc (wchar_t* pwc, const char* pmb, size_t max, mbstate_t* ps);
将多字节序列转换为宽字符
所指向的多字节字符mb转换为类型的值wchar_t并存储在所指向的位置pwc。该函数返回多字节字符的长度(以字节为单位)。

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

如果mb指向空字符时,该函数将重置移位状态并在存储完后返回零。宽空字符pwc

使用空指针作为对函数的调用mb也会重置换档状态,而忽略参数pwc最大限度(没有字符存储广告pwc)。

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

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

参数

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

返回值

来自的字节数mb用来产生宽广的性格。

如果这是null宽字符,或者mb是一个空指针,该函数返回零(在第一种情况下,空宽字符存储在pwc)。

如果最大限度的第一个字符mb形成一个不完整(但可能有效)的多字节字符,该函数返回(size_t)-2(没有值存储在pwc)。

否则,如果字符指向mb如果不形成有效的多字节字符(或一个字符的开头),则该函数将返回(size_t)-1和集errnoEILSEQ(没有值存储在pwc)。

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

示例

/* mbrtowc example */
#include <wchar.h>

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

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

  while (max>0) {
    length = mbrtowc(&dest,pt,max,&mbs);
    if ((length==0)||(length>max)) break;
    wprintf (L"[%lc]",dest);
    pt+=length; max-=length;
  }
}

int main()
{
  const char str [] = "mbrtowc example";

  printbuffer (str,sizeof(str));

  return 0;
}


函数printbuffer按字符打印多字节字符串。

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

输出:

[m][b][r][t][o][w][c][ ][e][x][a][m][p][l][e]

相关用法


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