jni開發中遇到的問題4:如何在jni中進行字串的合併
阿新 • • 發佈:2019-01-06
1:現狀:
jni裡面沒有提供方法來直接執行字串的追加
2:思路:
a--> 先將jstring變為c string
b--> 再者使用c裡面的方法進行字串的追加(strncat)
c--> 接著使用env NEWStringUTF()方法返回
3:相應程式碼:
3.1:jstring變為c string
3.2:整體步驟:char* Jstring2CStr(JNIEnv* env, jstring jstr){ char* rtn = NULL; jclass clsstring = env->FindClass("java/lang/String"); jstring strencode = env->NewStringUTF("GB2312"); 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; }