Home C&C++函数库 c++ 语法 程序源码 Linux C库

mbrtoc32

函数   <cuchar>

size_t mbrtoc32 ( char32_t * pc32, const char * pmb, size_t max, mbstate_t * ps);
转换多字节序列为32位字符

由pmb指向的多字节字符被转换为32位字符并存储在由pc32指向的位置。 函数返回多字节字符的字节长度(最大)。

如果定义了__STD_UTF_32__宏,则存储在pc32中的结果字符遵循UTF-32编码。

该函数使用(并更新)由ps描述的移位状态。
如果ps是一个空指针,则该函数使用自己的内部移位状态,只有调用该函数才会在必要时改变该状态。

如果获得的字符等于null 32位字符,函数将重置移位状态并返回零(在pc32后存储32位字符null )。

使用空指针(pmb)调用该函数也会重置移位状态,忽略参数pc32和max (pc32中不存储任何字符)。

这是mbrtowc (<cwchar>)的char32_t版本。

☲  参数


pc32
指向char32_t类型对象的指针。
或者,这个参数可以是一个空指针,在这种情况下,函数不存储char32_t的转换, 但仍然返回字符的字节长度。

pmb
指向多字节字符的首字节的指针。

或者,可以使用空指针调用函数,在这种情况下, 函数将移位状态(ps或它自己的内部状态)重置为初始状态并返回0。

max
从pmb读取的最大字节数。
宏常量MB_CUR_MAX定义了在当前区域设置下可以使用的多字节字符的最大字节数。
size_t是一个无符号整型。

ps
指向定义转换状态的mbstate_t对象的指针。

☉  返回值



从pmb中用来产生32位字符的字节数。

如果这是空的32位字符,或者如果pmb是空指针,函数返回0(在第一种情况下,空的32位字符存储在pc32中)。

如果多字节序列需要多个char32_t来表示,并且还没有存储所有的char32_t, 则在pc32存储相应的移位字符后,函数返回(size_t)-3。
下一次调用这个函数时,如果使用相同的ps参数指向与pmb相同的地址, 那么将产生表示多字节序列所需的char32_t字符序列中的下一个字符。

如果pmb的max 首字符是一个不完整的(但可能是有效的)多字节字符,函数返回(size_t)-2(没有值存储在pc32)。

或者,如果pmb指向的字符不能形成有效的多字节字符(或一个多字节字符的开头), 函数返回(size_t)-1并将errno设置为EILSEQ(在pc32中不存储任何值)。

注意,size_t是一个无符号整型,因此返回的值可能都不小于零。

🍄  另请参阅



c32rtomb 转换32位字符为多字节序列(function )
mbrtoc16 转换多字节序列为16位字符(function )
mbrtowc 转换多字节序列为宽字符(function )

联系我们 免责声明 关于CandCplus 网站地图