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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值