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:整体步骤: