jstring与c++字符串类型转换函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了jstring与c++字符串类型转换函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1720字,纯文字阅读大概需要3分钟。
内容图文
![jstring与c++字符串类型转换函数](/upload/InfoBanner/zyjiaocheng/838/c6d04c678e6d46019c84b39d75e5607f.jpg)
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net
jstring
str2jstring(JNIEnv* env, const char *
pat)
{
???? //定义java
String类 strClass
???? jclass
strClass = (env)->FindClass( "Ljava/lang/String;" );
???? //获取String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新String
???? jmethodID
ctorID = (env)->GetMethodID(strClass, "<init>" ,
"([BLjava/lang/String;)V" );
???? //建立byte数组
???? jbyteArray
bytes = (env)->NewByteArray(strlen(pat));
???? //将char*
转换为byte数组
???? (env)->SetByteArrayRegion(bytes,
0 ,
strlen(pat), (jbyte*)pat);
???? //
设置String, 保存语言类型,用于byte数组转换至String时的参数
???? jstring
encoding = (env)->NewStringUTF( "GB2312" );
???? //将byte数组转换为java
String,并输出
???? return (jstring)(env)->NewObject(strClass,
ctorID, bytes, encoding);
}
std::string
jstring2str(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 );??
???? std::string
stemp(rtn);
???? free(rtn);
???? return stemp;??
}??
|
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net
内容总结
以上是互联网集市为您收集整理的jstring与c++字符串类型转换函数全部内容,希望文章能够帮你解决jstring与c++字符串类型转换函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。