目前我正在编写一个插件,它只是一个现有库的包装器。插件的主机传递给我一个 utf-16 格式的字符串,定义如下
typedef 无符号短 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));
}
但显然这不起作用,给我一个编译错误“不允许从'const指针'(又名'const unsigned short *')到'const char16_t *'的static_cast”
那么最优雅/正确的方法是什么?
先感谢您。