根据mbsrtowcs实现mbsnrtowcs
Implementing mbsnrtowcs in terms of mbsrtowcs
在将libc++移植到Windows的几乎完全努力中,我需要mbsnrtowcs
函数,并认为最简单的方法是根据mbsrtowcs
实现它:
size_t mbsnrtowcs( wchar_t *__restrict__ dst, const char **__restrict__ src,
size_t nmc, size_t len, mbstate_t *__restrict__ ps )
{
char* nmcsrc = new char[nmc+1];
strncpy( nmcsrc, *src, nmc );
nmcsrc[nmc] = ' ';
const size_t result = mbsrtowcs( dst, &nmcsrc, len, ps );
delete[] nmcsrc;
return result;
}
这里的问题是mbsrtowcs
需要&nmcsrc
是类型const char**
,这不是,因为它是一个字符串,我只是复制了第一个nmc
元素,并附加了一个