1. 程式人生 > >jni開發中遇到的問題4:如何在jni中進行字串的合併

jni開發中遇到的問題4:如何在jni中進行字串的合併

1:現狀:

           jni裡面沒有提供方法來直接執行字串的追加

2:思路:

          a-->  先將jstring變為c string

          b-->  再者使用c裡面的方法進行字串的追加(strncat)

          c-->  接著使用env  NEWStringUTF()方法返回

3:相應程式碼:

      3.1:jstring變為c string

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;
}
       3.2:整體步驟: