本文介绍了如何将 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
发布评论