假设在 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;
}
Tôi là một lập trình viên xuất sắc, rất giỏi!