欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

android jni 字符串拼接,JNI 字符串拼接方法

发布时间:2024/4/14 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 android jni 字符串拼接,JNI 字符串拼接方法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

上代码:

//拼接字符串的方法

JNIEXPORT jstring JNICALL Java_cn__DataProvider_sayHelloWorld

(JNIEnv * env , jobjectobj , jstring jstr){

//把java中的string 转化成 c语言里面的char数组

char* cstr = Jstring2CStr(env,jstr);

char* hellostr ="World";

strcat(cstr,hellostr); //拼接两个字符串

return (*env)->NewStringUTF(env,cstr);

}

/**

* 工具方法

* 作用: 把java中的string 转化成一个c语言中的char数组

* 接受的参数 envjni环境的指针

* jstr 代表的是要被转化的java的string 字符串

* 返回值 : 一个c语言中的char数组的首地址 (char 字符串)

*/

char* Jstring2CStr(JNIEnv* env, jstring jstr)

{

char* rtn = NULL;

jclass clsstring = (*env)->FindClass(env,"java/lang/String");

jstring strencode = (*env)->NewStringUTF(env,"GB2312");

jmethodID mid =

(*env)->GetMethodID(env,clsstring,"getBytes","(Ljava/lang/String;)[B");

// String.getByte("GB2312");

jbyteArray barr=

(jbyteArray)(*env)->CallObjectMethod(env,jstr,mid,strencode);

jsize alen = (*env)->GetArrayLength(env,barr);

jbyte* ba = (*env)->GetByteArrayElements(env,barr,JNI_FALSE);

if(alen > 0)

{

rtn = (char*)malloc(alen+1); //"\0"

memcpy(rtn,ba,alen);

rtn[alen]=0;

}

(*env)->ReleaseByteArrayElements(env,barr,ba,0); //

return rtn;

}

总结

以上是生活随笔为你收集整理的android jni 字符串拼接,JNI 字符串拼接方法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。