c16rtomb, c32rtomb 子例程
用途
c16rtomb 和 c32rtomb 子例程将 16 位宽字符 (UTF-16) 和 32 位宽字符 (UTF-32) 转换为当前语言环境的相应多字节字符。
库
标准 C 库 (libc.a)
语法
描述
c16rtomb(buf, L'\0', ps) 如果 s 参数的值不是空指针,那么 c16rtomb 子例程确定表示与 c16 参数指定的宽字符 (包括任何移位序列) 对应的多字节字符所需的字节数,并将多字节字符表示存储在数组中,其中第一个元素由 s 参数指定。
存储的值大于 MB_CUR_MAX 字节的值。
如果 c16 参数的值为空宽字符,那么将存储空字节,前面是恢复初始移位状态所需的任何移位序列,并描述生成的状态为初始转换状态。
c32rtomb(buf, L'\0', ps)如果 s 参数的值不是空指针,那么 c32rtomb 子例程确定表示与 c32 参数指定的宽字符 (包括任何移位序列) 对应的多字节字符所需的字节数,并将多字节字符表示存储在数组中,其中第一个元素由 s 参数指定。
存储的值大于 MB_CUR_MAX 字节的值。 如果 c32 参数的值是空的宽字符,那么将存储空字节,前面是恢复初始移位状态所需的任何移位序列,并且结果状态描述为初始转换状态。
参数
| 项 | 描述 |
|---|---|
| 请 | 指定存储多字节字符表示的数组的第一个元素。 |
| c16, c32 | 表示宽字符序列。 |
| ps | 指定多字节转换的状态。 |
示例
- 可以按如下所示使用 mbstate_t 指针:
mbstate_t ss = 0;int x = c16rtomb(out, in, &ss);
返回值
c16rtomb 子例程返回数组对象中存储的字节数,包括任何移位序列。
当 c16 参数的值不是有效的宽字符时,将发生编码错误。 该函数将 EILSEQ 宏的值存储在 errno 变量中,并返回 (size_t) (-1)。 未指定转换状态。
c32rtomb 子例程返回数组对象中存储的字节数,包括任何移位序列。
当 c32 参数的值不是有效的宽字符时,将发生编码错误。 该函数将 EILSEQ 宏的值存储在 errno 变量中,并返回 (size_t) (-1)。 未指定转换状态。
错误代码
如果设置了以下错误代码,那么 c16rtomb 和 c32rtomb 子例程不成功。
| 项 | 描述 |
|---|---|
| EILSEQ | 指示无效的多字节字符序列。 |
文件
uchar.h 文件定义标准宏,数据类型和子例程。