c32rtomb函数
概要:
#include <uchar.h> size_t c32rtomb(char * restrict s, char32_t c32, mbstate_t * restrict ps);
描述:
如果参数s是空指针,c32rtomb函数等价于
c32rtomb(buf, L'\0', ps)
其中参数buf为内部缓冲。
如果参数s不是空指针,函数将确定参数c32对应的多字节字符的字节数(包括移位序列。);并将多字节字符的表示形式存入参数s指向的数组。最多可以存入MB_CUR_MAX个字节。如果参数c32是空宽字符,一个空字节将存储到参数s指向的数组中(该空字节会被前置恢复初始移位状态所需的移位序列。),*ps描述的结果状态将是初始转换状态。
参数:
char * restrict s
指向char类型对象的指针,指向对象应足以容纳一个多字节字符。当前语言环境中单个多字节字符的最大字节数为MB_CUR_MAX。
char32_t c32
char32_t类型的宽字符。
mbstate_t * restrict ps
指向mbstate_t类型对象的指针,该对象描述了多字节字符序列的当前转换状态,函数会根据需要对其进行更改。
如果参数ps是空指针,函数会使用内部mbstate_t对象,该对象在程序启动时初始化为初始转换状态;这种情况下,c32rtomb函数不要求避免与其它c32rtomb函数调用发生数据竞争。实现应像没有库函数使用ps空指针调用c32rtomb函数一样。
返回值:
函数返回存入参数s指向数组的字节数(包括移位序列)。如果参数c32不是一个有效的宽字符,将发生编码错误,函数将宏EILSEQ值存入errno,并返回(size_t)(-1),此外转换状态是不明确的。
范例:
|
|
输出:
中华儿女
注:使用ideone编译。
相关内容:
mbrtoc16 | 将多字节字符序列转换为16位宽字符的函数。 |
mbrtoc32 | 将多字节字符序列转换为32位宽字符的函数。 |
c16rtomb | 将16位宽字符转换为多字节字符序列的函数。 |