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

mbrtoc16

函数   <cuchar>

size_t mbrtoc16 ( char16_t * pc16, const char * pmb, size_t max, mbstate_t * ps);

转换多字节序列为16位字符

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

如果定义了__STD_UTF_16__宏,则存储在pc16中的结果字符遵循UTF-16编码。

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

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

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

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

☲  参数


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

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

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

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

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

☉  返回值



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

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

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

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

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

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

🍄  另请参阅



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

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