C++ Reference: Standard C++ Library reference: C Library: cwchar: wcsrtombs

C++官网参考链接:https://cplusplus.com/reference/cwchar/wcsrtombs/

函数
<cwchar>
wcsrtombs
size_t wcsrtombs (char* dest, const wchar_t** src, size_t max, mbstate_t* ps);
将宽字符字符串转换为多字节字符串
将src间接指向的C宽字符串的max个字符转换为它们的等价多字节序列,并将它们存储在dest指向的缓冲区中,如果遇到终止的空宽字符就停止(它也被转换和存储,但不计入函数返回的长度中)。
该函数使用(并更新)由ps描述的移位状态。如果ps是空指针,则该函数使用自己的内部移位状态,只有在必要时调用该函数才能更改该状态。
如果该函数转换整个C宽字符串(直到找到空宽字符),且dest不是空指针,则该函数将src设置为空指针值,并保证结果状态为初始转换状态。
此函数的行为取决于所选C语言环境(C locale)的LC_CTYPE类别。
这是wcstombs<cstdlib>)的可重新启动版本。

形参 
dest 
指向char元素数组的指针,长度足够存储max个字节的C字符串。
如果这是一个空指针,函数不存储结果序列,但仍然计算需要多少字节来存储src的转换(在这种情况下形参max被忽略)。
src
指向要转换的C宽字符串的指针(间接指针)。
如果转换过早停止,此值由函数修改为指向最后一个转换后的宽字符之后的位置,如果函数到达终止空字符,则指向空指针。
max
写入dest的最大字节数量。
size_t是无符号整型。
ps
指向定义转换状态的mbstate_t对象的指针。

返回值
写入dest的字节数量(不包括最终终止的空字符)。
如果在转换过程中,函数遇到一个没有有效多字节序列等价的宽字符,则函数将errno设置为EILSEQ并返回(size_t)-1(src将指向第一个无法转换的字符)。
注意,size_t是无符号整型,因此返回的值都不可能小于0。

用例 
/* 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;
}
输出:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值