当前位置: 首页 > news >正文

网站建设类论文群发软件

网站建设类论文,群发软件,织梦做企业网站,视频做网站背景目录 0 前言 1 string类型参数形式传值 2 测试和结果 0 前言 类似之前我写过的两篇文章:一篇介绍了在JNI中基础类型int的传值方式;一篇详细梳理了在JNI层中多维数组的多种传值方式。 JNI内两种方式从C/C中传递一维、二维、三维数组数据至Java层详细…

目录

0  前言

1 string类型参数形式传值

2 测试和结果


0  前言

        类似之前我写过的两篇文章:一篇介绍了在JNI中基础类型int的传值方式;一篇详细梳理了在JNI层中多维数组的多种传值方式。

JNI内两种方式从C/C++中传递一维、二维、三维数组数据至Java层详细梳理_nanke_yh的博客-CSDN博客

JNI内形参从C代码中获取返回值并返回到Java层使用-CSDN博客

        这篇则主要是讲JNI中String类型的数据如何通过参数的形式传递数据值。

1 string类型参数形式传值

        对于JNI层传递string类型数据的网络检索,出现的并不多。大多都是讲通过return方式进行内容传递的,大家大可参考:JNI String类型 - 知乎 (zhihu.com),内部有相关理论介绍可以了解。

        通过参数形式传递string类型数据具体借鉴了下文:JNI 通过形参String返回数据的方法_jni string 参数返回_Cosmo_Wang1989的博客-CSDN博客

本文具体的其实也是将string传递成StringBuffer类型,即以StringBuffer作为参数传入获取内部string数据。如此在c/c++中就有了以下的实现代码:(具体的分析解释看代码中的注释)

//最终实际传出的数据类型为StringBuffer
JNIEXPORT jint Java_com_test_java_JNItest_testString(JNIEnv *env, jobject, jobject result)
{string  sstr = "Hello world!"; //str.c_str()转成const char*const char* str = sstr.c_str();//jstring的类型jclass strClass = (env)->FindClass("Ljava/lang/String;");//methodIDjmethodID ctorID = (env)->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");//通过字符数组存储字符串 jbyteArray bytes = (env)->NewByteArray(strlen(str));(env)->SetByteArrayRegion(bytes, 0, strlen(str), (jbyte*)str);//规定字符为UTF-8jstring encoding = (env)->NewStringUTF("UTF-8"); //得到jstring类型的数据   //若采用return方式传出的话,则可以直接返回temp。jstring temp=(jstring)(env)->NewObject(strClass, ctorID, bytes, encoding);//获取需要传出去result参数类型jclass outputJcls = env->GetObjectClass(result);//根据result数据类型获取append操作的methodIDjmethodID appendJmId = env->GetMethodID(outputJcls, "append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;");//再根据methodID将jstring传到参数result上env->CallObjectMethod(result, appendJmId, temp);return 0;
}

2 测试和结果

        针对上述的代码实现,在java层调用native并测试:

public native int testString(StringBuffer result);

        main函数内测试代码:

        JNItest JNI = new JNItest();StringBuffer output = new StringBuffer();int rnt = JNI.testString(output);//StringBuffer通过toString即可转为StringSystem.out.println(output.toString());

        其中StringBuffer通过toString即可转为String,关于Java中这些字符串类型之间关系可参考:Java中字符数组、String类、StringBuffer三者的相互转换 - 功夫 熊猫 - 博客园 (cnblogs.com)

        最后运行结果如下:

         根据结果可以发现,output获取了c/c++层内部sstr的数据内容了。

http://www.yidumall.com/news/60807.html

相关文章:

  • 网站建设 计算机软件开发税点找索引擎seo
  • 沧州网站设计师招聘百度发布信息怎么弄
  • 旅游网站设计说明书大连做优化网站哪家好
  • 做网站需要什么专业方向的员工央视新闻
  • 福建省效能建设网站百度招聘网最新招聘信息
  • 网页设计公司介绍怎么写手机网站关键词seo
  • 自动提卡的网站怎么做的seo工具是什么意思
  • wps上怎么做网站点击分析表seo内部优化方案
  • 电子商务网站建设的目标是万网查询
  • 廊坊网站建设价格域名注册优惠
  • 深圳市龙华区网站建设网络营销方法
  • 学什么可以先做网站推广员是干什么的
  • 网站后台 生成所有页面佛山优化推广
  • 制作php网站用什么软件国家免费技能培训平台
  • a站免费最好看的电影片推荐如何建造自己的网站
  • 建站工作室 网站建设工作室如何制作一个网站
  • 高品质网站建设怎么打广告吸引客户
  • 寺庙网站模板seo网站优化教程
  • 做公司网站需要注意什么网站开发怎么做
  • 响应式网站 模版360优化大师下载官网
  • 温州网站建设wzwmwl建网站的软件有哪些
  • 做淘宝的导购网站如何发布自己的广告
  • 服饰营销型网站建设长沙网站搭建关键词排名
  • 黄石本土做网站的公司网销怎么做
  • 做网站注意什么问题外贸怎么找客户资源
  • 做网站怎样投放广告网站外链有多重要
  • 哪个网站可以卖自己做的模型2021最新免费的推广引流软件
  • 视觉设计网站有哪些做销售记住这十句口诀
  • 微信如何做微商城网站外包网站
  • 网站的基本要素怎么才能在百度上做引流呢