JAVA tool-convert java's String class to a char * array in C
In JNI development, there is usually a conversion of String and char * When java interacts with c Code. However, note that these two types are not the same.
I found a tool method as a memo.
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"); jbyteArray barr = (jbyteArray) (* env)-> CallObjectMethod (env, jstr, mid, strencode ); // String. getByte ("GB2312"); 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 ;}