c8rtomb
|
定义于头文件
<uchar.h>
|
||
| (C23 起) | ||
将单个码点从UTF-8转换为窄多字节字符表示形式。
如果 s 不是空指针且 c8 是某个码点有效 UTF-8 编码的最后一个码元,该函数将确定存储该码点多字节字符表示所需的字节数(包括任何移位序列,并考虑当前多字节转换状态 * ps ),并将多字节字符表示存储在以 s 指向的首元素的字符数组中,同时根据需要更新 * ps 。此函数最多可写入 MB_CUR_MAX 字节。
如果 c8 不是表示码点的最终UTF-8代码单元,该函数不会向 s 指向的数组写入数据,仅更新 * ps 。
如果 s 是空指针,该调用等价于 c8rtomb ( buf, u8 ' \0 ' , ps ) (针对某个内部缓冲区 buf )。
如果 c8 是空字符 u8 ' \0 ' ,将存储一个空字节,并在其前插入恢复初始移位状态所需的任何移位序列,同时转换状态参数 * ps 将被更新以表示初始移位状态。
该函数使用的多字节编码由当前生效的 C 语言区域设置指定。
目录 |
参数
| s | - | 指向用于存储多字节字符的窄字符数组的指针 |
| c8 | - | 要转换的UTF-8代码单元 |
| ps | - | 用于解释多字节字符串时使用的转换状态对象指针 |
返回值
存储在数组对象中的字节数(包括任何移位序列)。当 c8 不是代码点UTF-8表示中的最终代码单元时,该值可能为零。
如果 c8 无效(无法形成对应于有效多字节字符的 char8_t 序列),宏 EILSEQ 的值将被存入 errno ,返回 ( size_t ) - 1 ,且转换状态变为未指定。
注释
使用空指针参数作为
s
调用
c8rtomb
时,可能与其他同样使用空指针参数作为
s
的
c8rtomb
调用产生数据竞争。
示例
|
本节内容不完整
原因:缺少示例 |
参考文献
- C23 标准 (ISO/IEC 9899:2024):
-
- 7.30.1.2 c8rtomb 函数
参见
|
(C23)
|
将窄多字节字符转换为UTF-8编码
(函数) |
|
C++ 文档
for
c8rtomb
|
|