jni对字符串的处理

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

字符串的处理我感觉比较有用的方法有三个

newStringUTF这个用来新建一个java字符串

getStringUTFLength获取java字符串的长度

getStringUTFChars这个用来获取java字符串的指针

releaseStringUTFChars释放获取到的指针

java方法声明:

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

java方法名和c++方法名的对应,请直接使用Javah生成,不要想自己去写,规则太麻烦了。

c++代码实现

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;
}

你可能感兴趣的:(jni)