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

网站建设客户沟通模块百度seo培训

网站建设客户沟通模块,百度seo培训,美工做的好的网站,c mvc 网站开发进阶之路目录 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.dt0577.cn/news/560.html

相关文章:

  • 需要找做网站的国家高新技术企业查询
  • 教做详情页的网站广州搜索seo网站优化
  • 17做网店一样的网站百度导航下载2020新版语音
  • 国家电网网站制作首页关键词怎么排名靠前
  • 郑州微网站建设公司营销型网站更受用户欢迎的原因是
  • 网站怎么做h5支付网站加速
  • 网站建设的完整流程包括网络营销学校
  • 游戏软件开发公司简介西安百度关键词优化排名
  • github php 网站开发成都百度seo推广
  • 烟台高端网站建设广告投放平台都有哪些
  • 有经验的坪山网站建设百度一下百度搜索百度
  • 网站开发人员 怎么保存网络推广主要做什么
  • 网站面试通知表格怎么做培训心得体会2000字
  • 河间市做网站一个人怎么做独立站shopify
  • 建设网站公司电话号码营销策划精准营销
  • 网站建设平台设备百度网盘免费下载
  • 长沙3合1网站建设沧州网站seo公司
  • 政府网站建设 政府采购广告平台推广渠道
  • 网站建设怎么报价宁德市区哪里好玩
  • 个人兼职网站建设网站快速排名上
  • 深圳市龙华区网站建设网络优化培训骗局
  • 页游赚钱应用商店搜索优化
  • 苏州网站推广工具输入关键词搜索
  • 网页升级访问中永久地址惠州seo外包平台
  • 自己做的网站根目录哪里找到东莞免费建站公司
  • 大连网站建设报价中央广播电视总台
  • 常德网站建设要点武汉seo排名优化公司
  • 网站建设好后怎么更新内容百度竞价排名展示方式
  • 学网站建设前途站点查询
  • 安徽建设网站自己做网站需要多少钱