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


C语言 wcrtomb用法及代码示例


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

用法:

size_t wcrtomb (char* pmb, wchar_t wc, mbstate_t* ps);
将宽字符转换为多字节序列
宽广的性格wc转换为等效的多字节并存储在由指向的数组中mb。该函数以字节为单位返回等效的多字节序列的长度(以字节为单位)mb

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

如果wc是一个空宽字符,该函数将重置移位状态并存储一个空字节,之后是恢复初始移位状态所需的任何移位序列。

使用空指针作为对函数的调用mb也会重置换档状态(并忽略参数wc)。

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

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

参数

pmb
指向足以容纳多字节序列的数组的指针。
当前语言环境中字符的多字节序列的最大长度为MB_CUR_MAX个字节。

或者,可以使用空指针调用该函数,在这种情况下,该函数总是将变速状态重置为初始状态,就像wc曾是L'\0'(忽略传递为的实际值wc)。
wc
宽字型wchar_t
ps
指向一个指针mbstate_t定义转换状态的对象。

如果这是一个空指针,则该函数使用其自己的内部换档状态,它是在程序启动时初始化的,只能通过对此函数的调用来更改。

返回值

写入的多字节序列的大小mb(以字节为单位),包括任何移位字符。

如果没有字符对应,则函数返回(size_t)-1和集errnoEILSEQ

如果mb如果为空指针,则该函数返回1加上恢复初始移位状态所需的字节数(就像该函数在内部缓冲区上操作,并且wc曾是L'\0')。

示例

/* wcrtomb example */
#include <wchar.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
  const wchar_t* pt = L"wcrtomb example";
  char buffer [MB_CUR_MAX];
  size_t length, i;
  mbstate_t mbs;

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

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

  return 0;
}


该示例打印使用选定的语言环境将宽字符串转换为的多字节字符(在这种情况下,"C"语言环境)。

输出:

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

相关用法


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