jni對字符串的處理

jni提供了一種java和c/c++交互的方式java

字符串的處理我感受比較有用的方法有三個c++

newStringUTF這個用來新建一個java字符串this

getStringUTFLength獲取java字符串的長度指針

getStringUTFChars這個用來獲取java字符串的指針code

releaseStringUTFChars釋放獲取到的指針字符串

java方法聲明:get

 public static native String getString();
 public static native void setString(String data);

java方法名和c++方法名的對應,請直接使用Javah生成,不要想本身去寫,規則太麻煩了。string

c++代碼實現class

JNIEXPORT jstring JNICALL Java_JNITest_getString(JNIEnv *env, jclass thisObj){
 const char * data ="hello";
 //新建java字符串
 jstring jdata= env->NewStringUTF(data);
 return jdata;
}
JNIEXPORT void JNICALL Java_JNITest_setString(JNIEnv *env, jclass thisObj, jstring data){
 //轉換成c++字符串
 const char* showData=env->GetStringUTFChars(data,NULL);
 string msg(showData);
 //釋放引用
 env->ReleaseStringUTFChars(data,showData);
 cout<<msg<<endl;
}
相關文章
相關標籤/搜索