从 std::wstring 转换为 jstring

convert to jstring from std::wstring

我正在尝试将 wstring 从我的 cpp 代码转换为 jstring。

我知道有一个名为 NewStringUTF 的方法可以从 std::string 获取 jstring(当然是在从该字符串获取 const char* 之后)。

如果输入是 std::wstring 而不使用 iconv,我有没有办法做同样的事情?

简单的形式是将您的 std::wstring 转换为 std::string 以使用 NewStringUTF。

这里有一个转换主题 How to convert wstring into string?

JNI 有 NewString(JNIEnv * , const jchar * , jsize) 函数。如果你的 std::wstring::c_str() returns 是兼容 jchar* 的指针(这取决于你的平台),你可以试试这个函数。请注意,如果您的 wchar_t 是 32 位的(如 Linux),您不能直接使用它。有关详细信息,请参阅 Android JNI - Reliable way to convert jstring to wchar_t and How do I convert jstring to wchar_t *