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


C语言 wcsrtombs用法及代码示例


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

用法:

size_t wcsrtombs (char* dest, const wchar_t** src, size_t max, mbstate_t* ps);
将宽字符字符串转换为多字节字符串
最多翻译最大限度间接指向的C宽字符串的字符src到它们的多字节序列等效项,并将它们存储在指向的缓冲区dest,如果终止则停止空宽字符遇到(也将转换并存储它,但不计入该函数返回的长度)。

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

如果函数翻译了整个C宽字符串(直到找到一个空宽字符), 和dest不是空指针,该函数集src设置为空指针值,并保证结果状态为初始转换状态。

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

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

参数

dest
指向数组的指针char足以存储C字符串的元素最大限度个字节。
如果这是一个空指针,则该函数不会存储结果序列,但仍会计算需要多少字节来存储翻译的内容。src(范围最大限度在这种情况下将被忽略)。
src
指向要转换的C宽字符串的指针(间接指针)。
如果该函数过早停止转换,则该函数将修改该值以指向转换后的最后一个宽字符,如果该函数到达终止的空字符,则指向空指针。
max
要写入的最大字节数dest
size_t是无符号整数类型。
ps
指向一个指针mbstate_t定义转换状态的对象。

返回值

写入的字节数dest(不包括最终终止的空字符)。

如果在翻译过程中该函数遇到的宽字符没有等效的有效多字节序列,则该函数将设置errnoEILSEQ并返回(size_t)-1(src将指向无法翻译的第一个字符。

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

示例

/* wcsrtombs example */
#include <stdio.h>
#include <wchar.h>

int main() {
  const wchar_t str[] = L"wcstombs example";
  const wchar_t * p;
  mbstate_t mbs;
  char buffer[32];
  int ret;

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

  printf ("wchar_t string: %ls \n",str);

  p = str;
  ret = wcsrtombs ( buffer, &p, sizeof(buffer), &mbs );
  if (ret==32) buffer[31]='\0';
  if (ret) printf ("multibyte string: %s \n",buffer);

  return 0;
}


输出:

wchar_t string: wcstombs example 
multibyte string:  wcstombs example 

相关用法


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