且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将 jstring 转换为 wchar_t *

更新时间:2023-11-11 23:23:16

如果这对某人有帮助...我已经将此功能用于 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;
}