C++ Reference: Standard C++ Library reference: C Library: cuchar: c32rtomb

C++官网参考链接:https://cplusplus.com/reference/cuchar/c32rtomb/

函数 
<cuchar>
c32rtomb
size_t c32rtomb ( char * pmb, char32_t c32, mbstate_t * ps );
将32位字符转换为多字节序列
32位字符c32被转换为其等价多字节,并存储在pmb指向的数组中。函数返回由pmb指向的等价多字节序列的字节长度。
如果定义了__STD_UTF_32__,c32将遵循UTF-32编码。
该函数使用(并更新)由ps描述的移位状态。如果ps是空指针,则该函数使用自己的内部移位状态,只有在必要时调用该函数才能更改该状态。
如果c32是一个空32位字符,该函数将重置移位状态并存储一个空字节,前面是恢复初始移位状态所需的任何移位序列。
使用空指针作为pmb调用函数也会重置移位状态(并忽略形参c32)。
这是wcrtomb的char32_t版本(<cwchar>)。

形参 
pmb
指向足以容纳多字节序列的数组的指针。
当前语言环境中字符的多字节序列的最大长度是MB_CUR_MAX字节。
或者,可以用空指针调用函数,在这种情况下,函数会将移位状态(ps或它自己的内部状态)重置为初始状态并返回0。
c32
char32_t类型的32位字符。
ps
指向定义转换状态的mbstate_t对象的指针。

返回值
pmb写入的多字节序列的字节大小,包括任何移位字符。这可能是0。
如果没有字符对应,函数返回(size_t)-1并将errno设置为EILSEQ。
如果pmb是空指针,则函数在pmb上不存储字节,因此返回0。

用例
/* c32rtomb example */
#include <wchar.h>
#include <uchar.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
  const char32_t* pt = U"Juan Souli\u00e9";
  char buffer [MB_CUR_MAX];
  int i;
  size_t length;
  mbstate_t mbs;

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

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

  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、付费专栏及课程。

余额充值