C++官网参考链接:https://cplusplus.com/reference/cwchar/mbsrtowcs/
函数
mbsrtowcs
size_t mbsrtowcs (wchar_t* dest, const char** src, size_t max, mbstate_t* ps);
将多字节字符串转换为宽字符字符串
将src指向的多字节序列转换为等效的宽字符序列(存储在dest指向的数组中),直到转换了max个宽字符,或者在多字节序列src中遇到空字符(也被转换和存储,但不计入函数返回的长度中)。
如果max个宽字符被成功转换,则存储在dest中的结果字符串不是以空结束的。
该函数使用(并更新)由ps描述的移位状态。如果ps是空指针,则该函数使用自己的内部移位状态,只有在必要时调用该函数才能更改该状态。
如果该函数转换整个多字节字符串(直到找到空字符),且dest不是空指针,则该函数将src设置为空指针值,并保证结果状态为初始转换状态。
此函数的行为取决于所选C语言环境(C locale)的LC_CTYPE类别。
这是 mbstowcs(
形参
dest
指向wchar_t元素数组的指针,其长度足以存储max个宽字符的字符串。
如果这是一个空指针,函数不存储结果字符串,但仍然计算src中有多少字节构成有效字符串(在这种情况下形参max被忽略)。
src
指向要解释的C多字节字符串的指针(间接指针)。
如果转换过早停止,此值由函数修改为指向被转换的最后一个多字节字符之后的位置,如果函数到达终止空字符,则指向空指针。
max
写入dest的最大宽字符数量。
size_t是无符号整型。
ps
指向定义转换状态的mbstate_t对象的指针。
返回值
写入dest的宽字符数量(不包括最终终止的空字符)。
如果在转换过程中,函数遇到一个字节序列,该字节序列不能形成有效的多字节字符,则函数将errno设置为EILSEQ并返回(size_t)-1(src将指向无法转换的第一个字节)。
注意,size_t是无符号整型,因此返回的值都不可能小于0。