mbstowcs
函数 <cstdlib>
size_t mbstowcs (wchar_t* dest, const char* src, size_t max);
转换多字节字符串到宽字符字符串
将src指向的多字节序列转换为等效的宽字符序列(存储在dest指向的数组中),
直到转换了max 宽字符或在多字节序列src中遇到空字符(也被转换和存储),但不计入函数返回的长度)。
如果成功地转换了max字符,则存储在dest中的字符串不会以空结束。
这个函数的行为取决于所选
C语言环境的LC_CTYPE类别。
☲ 参数
dest
指向
wchar_t元素数组的指针,该数组的长度足以包含结果序列(最多,最大宽度字符)。
src
要解释的多字节字符的c字符串。
多字节序列应在初始移位状态开始。
max
要写入dest的
wchar_t字符的最大数目。
Size_t是一个无符号整型。
☉ 返回值
写入dest的宽字符数,不包括最终终止的空字符。
如果遇到无效的多字节字符,则返回(
size_t)-1值。
注意,
size_t是一个无符号整型,因此返回的值可能都不小于零。
↭ 数据竞争
函数访问src指向的数组,并修改dest指向的数组。
函数也可以访问和修改一个内部状态对象,如果实现使用一个静态对象
(参阅
mbsrtowcs以获得可以使用外部状态对象的替代方法),则可能导致对该函数的并发调用发生数据竞争。
同时更改区域设置也可能会引入数据竞争。
❆ 异常(c++)
无抛出保证:这个函数不抛出异常。
如果dest没有指向一个足够长的数组来包含翻译后的序列,或者src不是以空结束的,
或者没有包含足够的字节来生成最大宽度的字符(或者如果它不是在初始移位状态开始),它将导致未定义的行为。
🍄 另请参阅