本文介绍了如何将jstring转换为wchar_t *的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们假设在C ++端我的函数接受 jstring
变量 myString
。我可以将它转换为ANSI字符串如下:
Let's say that on the C++ side my function takes a variable of type jstring
named myString
. I can convert it to an ANSI string as follows:
const char* ansiString = env->GetStringUTFChars(myString, 0);
有办法取得
const wchar_t * unicodeString =
推荐答案
...我已经为Android项目使用了这个函数:
If this helps someone... I've used this function for an Android project:
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;
}
一个改进的解决方案可能是(感谢您的反馈):
An improved solution could be (Thanks for the feedback):
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;
}
这篇关于如何将jstring转换为wchar_t *的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!