C语言uchar头文件(uchar.h)中c32rtomb函数的用法及代码示例。
用法:
size_t c32rtomb ( char * pmb, char32_t c32, mbstate_t * ps );
将32位字符转换为多字节序列
如果__STD_UTF_32__被定义为,c32应遵循UTF-32编码。
该函数使用(并更新)由以下内容描述的换档状态ps。如果ps是一个空指针,该函数使用其自己的内部换档状态,只有在调用此函数时才需要进行更改。
如果c32是一个空的32位字符,该函数将重置移位状态并存储一个空字节,之后是恢复初始移位状态所需的任何移位序列。
使用空指针作为对函数的调用mb也会重置换档状态(并忽略参数c32)。
这是char32_t版本wcrtomb(<cwchar>)。
参数
- pmb
- 指向足以容纳多字节序列的数组的指针。
当前语言环境中字符的多字节序列的最大长度为MB_CUR_MAX个字节。
或者,可以使用空指针调用该函数,在这种情况下,该函数将重置移位状态(ps(或它自己的内部状态)返回初始状态,并返回零。 - c32
- 类型的32位字符char32_t。
- ps
- 指向一个指针mbstate_t定义转换状态的对象。
返回值
写入的多字节序列的大小mb(以字节为单位),包括任何移位字符。可能为零。如果没有字符对应,则函数返回(size_t)-1和集errno至EILSEQ。
如果mb是一个空指针,该函数不存储任何字节mb,因此返回零。
示例
/* 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;
}
可能的输出:
Juan Soulié |
相关用法
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C c32rtomb function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。