怎么把jstring转换成char

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把jstring转换成char相关的知识,希望对你有一定的参考价值。

参考技术A //jstring to char*
char* jstringTostring(JNIEnv* env, jstring jstr)

char* rtn = NULL;
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("utf-8");
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr, mid, strencode);
jsize alen = env->GetArrayLength(barr);
jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0)

rtn = (char*)malloc(alen + 1);
memcpy(rtn, ba, alen);
rtn[alen] = 0;

env->ReleaseByteArrayElements(barr, ba, 0);
return rtn;


//char* to jstring
jstring stoJstring(JNIEnv* env, const char* pat)

jclass strClass = env->FindClass("Ljava/lang/String;");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
本回答被提问者和网友采纳

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

最近NDK开发过程中,需要进行jstringchar* 相互转换,这里记录一下两个转换的函数。

一、宏定义字符串编码格式

在Android中默认使用UTF-8编码

#define CHARSET_UTF8 "UTF-8"

二、jstringToChar

jstring转换为char*,如下所示:

char *jstringToChar(JNIEnv *env, jstring jstr) 
   
    

以上是关于怎么把jstring转换成char的主要内容,如果未能解决你的问题,请参考以下文章

怎么把char 数组转换成String?

C++怎么把int转换成char

Qt中,把UTF-8的QString,转换成GBK的char[],怎么做?

C++中如何把char*转换成string*?

c语言怎么把UTF-8转换成Unicode

怎么把Map类型强制转换成List类型??