現在、既存のライブラリの単なるラッパーであるプラグインを作成しています。プラグインのホストは、次のように定義された 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));
}
しかし、明らかにこれは機能せず、「「const ポインター」(別名「const unsigned short*」) から「const char16_t *」への static_cast は許可されていません」というコンパイル エラーがスローされます。
では、最もエレガントで正しい方法は何ですか?
前もって感謝します。