Home C&C++函数库 c++ 语法 程序源码 Linux C库

wcstombs

函数   <cstdlib>

size_t wcstombs (char* dest, const wchar_t* src, size_t max);
转换宽字符字符串为多字节字符串

将宽字符从src指向的序列转换为多字节等效序列(存储在dest指向的数组中), 直到max 字节被转换或宽字符转换为空字符为止。

如果成功地转换了max 字节数,则存储在dest中的结果字符串不会以空结束。

生成的多字节序列从初始移位状态(如果有的话)开始。

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

☲  参数



dest
指向char元素数组的指针,该数组的长度足以包含结果序列(最多,最大字节数)。

src
要转换的C宽字符串。

max
要写入dest的最大字节数。
size_t是一个无符号整型。

☉  返回值



写入dest的字节数,不包括最终结束的空字符。
如果遇到与有效多字节字符不对应的宽字符,则返回(size_t)-1值。
注意,size_t是一个无符号整型,因此返回的值可能都不小于零。

☣  示例



/* wcstombs example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* wcstombs, wchar_t(C) */

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

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

  ret = wcstombs ( buffer, str, sizeof(buffer) );
  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

↭  数据竞争



函数访问src指向的数组,并修改dest指向的数组。

该函数也可以访问和修改一个内部状态对象,如果实现使用一个静态对象 (请参阅wcsrtombs以获得一个可以使用外部状态对象的替代对象), 那么对该函数的并发调用可能会导致数据竞争。

同时更改区域设置也可能会引入数据竞争。

❆  异常(c++)



无抛出保证:这个函数不抛出异常。

如果dest指向的数组长度不足以包含翻译后的序列, 或者src不是以空结束的,或者没有包含足够宽的字符来生成最大多字节字符序列,则会导致未定义的行为。

🍄  另请参阅



mblen 获取多字节字符的长度(function)
wctomb 转换宽字符为多字节序列(function)
mbstowcs 转换多字节字符串为宽字符字符串(function)

联系我们 免责声明 关于CandCplus 网站地图