假设在C++方面,我的函数采用了一个jstring
名为的变量myString
.我可以将它转换为ANSI字符串,如下所示:
const char* ansiString = env->GetStringUTFChars(myString, 0);
有没有办法得到
const wchar_t* unicodeString =
...
如果这有助于某人...我已将此功能用于Android项目:
std::wstring Java_To_WStr(JNIEnv *env, jstring string) { std::wstring value; const jchar *raw = env->GetStringChars(string, 0); jsize len = env->GetStringLength(string); const jchar *temp = raw; while (len > 0) { value += *(temp++); len--; } env->ReleaseStringChars(string, raw); return value; }
一个改进的解决方案可能是(感谢您的反馈):
std::wstring Java_To_WStr(JNIEnv *env, jstring string) { std::wstring value; const jchar *raw = env->GetStringChars(string, 0); jsize len = env->GetStringLength(string); value.assign(raw, raw + len); env->ReleaseStringChars(string, raw); return value; }