将 jstring 转换为 QString

Posted

技术标签:

【中文标题】将 jstring 转换为 QString【英文标题】:Convert jstring to QString 【发布时间】:2014-12-07 17:33:34 【问题描述】:

我正在调用一个返回字符串的 Java 函数:

QandroidJniObject obj = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");
jstring jstr = obj.object<jstring>();
QString str = jstr; // This doesn't work, obviously, compiler-error.

它返回一个jstring,这对我来说不是很有用。如何将其转换为 QString,以便在我的代码中使用它?

【问题讨论】:

【参考方案1】:

您需要使用this method。

QString QAndroidJniObject::toString() 常量

返回一个带有 java 对象的字符串表示的 QString。在 Java String 对象上调用此函数是获取实际字符串数据的便捷方式。

所以,如果我是你,我会写这个:

QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");

QString qstring = string.toString();

【讨论】:

【参考方案2】:

要将jstring 转换为QString,您可以使用以下几行:

static void onContactSelected(JNIEnv * env, jobject /*obj*/, jstring number)

    QString qstr(env->GetStringUTFChars(number, 0));
    /* .... some codes .... */

或者简单地说:

JNIEnv* env;
QString qstr(env->GetStringUTFChars(number, 0));

Source

【讨论】:

以上是关于将 jstring 转换为 QString的主要内容,如果未能解决你的问题,请参考以下文章

wchar_t转换为jstring

JAVA/JNI的jstring转换为char*

c用法中的jstring到char *未转换为可打印格式

怎么把jstring转换成char

我的Android进阶之旅NDK开发之C++如何相互转换jstring和char*

我的Android进阶之旅NDK开发之C++如何相互转换jstring和char*