目前我正在编写一个插件,它只是现有库的包装器.插件的主机向我传递了一个utf-16格式的字符串,定义如下
typedef unsigned short PA_Unichar;
并且包装的库只接受一个const char*或一个std :: string utf-8格式的字符串,我尝试编写转换函数
std::string toUtf8(const PA_Unichar* data)
{
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert;
return std::string(convert.to_bytes(static_cast<const char16_t*>(data));
}
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用,抛出一个编译错误"static_cast from'const pointer'(又名'const unsigned short*')到'const char16_t*'是不允许的"
那么最优雅/最正确的方法是什么?
先感谢您.