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是一个无符号整型,因此返回的值可能都不小于零。
🍄 另请参阅