JNI 字符串拼接方法

原创 2015年09月06日 17:33:19

上代码:

//拼接字符串的方法
JNIEXPORT jstring JNICALL Java_cn__DataProvider_sayHelloWorld

(JNIEnv * env , jobjectobj , jstring jstr){

//把java中的string 转化成 c语言里面的char数组

char* cstr = Jstring2CStr(env,jstr);
char* hellostr ="World";
strcat(cstr,hellostr); //拼接两个字符串
return (*env)->NewStringUTF(env,cstr);

}

/**

* 工具方法

* 作用: 把java中的string 转化成一个c语言中的char数组

* 接受的参数 envjni环境的指针

* jstr 代表的是要被转化的java的string 字符串

* 返回值 : 一个c语言中的char数组的首地址 (char 字符串)

*/

char* Jstring2CStr(JNIEnv* env, jstring jstr)

{
char* rtn = NULL;
jclass clsstring = (*env)->FindClass(env,"java/lang/String");

jstring strencode = (*env)->NewStringUTF(env,"GB2312");

jmethodID mid =

(*env)->GetMethodID(env,clsstring,"getBytes","(Ljava/lang/String;)[B");

// String.getByte("GB2312");

jbyteArray barr=

(jbyteArray)(*env)->CallObjectMethod(env,jstr,mid,strencode);

jsize alen = (*env)->GetArrayLength(env,barr);

jbyte* ba = (*env)->GetByteArrayElements(env,barr,JNI_FALSE);

if(alen > 0)

{

rtn = (char*)malloc(alen+1); //"\0"

memcpy(rtn,ba,alen);

rtn[alen]=0;

}

(*env)->ReleaseByteArrayElements(env,barr,ba,0); //

return rtn;

}


JNI/NDK开发指南(四)——字符串处理

JNI把Java中的所有对象当作一个C指针传递到本地方法中,这个指针指向JVM中的内部数据结构,而内部的数据结构在内存中的存储方式是不可见的。只能从JNIEnv指针指向的函数表中选择合适的JNI函数来...
  • xyang81
  • xyang81
  • 2014年12月24日 00:39
  • 13866

三种字符串拼接方式比较

在Java中对字符串的操作可以说是最常用的,在对字符串的操作中有三种拼接字符串的方法,下面我们来看看这三种方式有何不同,在什么时候用比较合适。一、从耗时角度看先来看一段代码:package com.c...
  • lxq_xsyu
  • lxq_xsyu
  • 2014年09月12日 23:39
  • 4180

Android jni字符串如何加密

1、创建布局:
  • lovoo
  • lovoo
  • 2016年06月06日 23:06
  • 839

android中使用jni对字符串加解密实现分析demo

  • 2014年10月14日 08:48
  • 1.65MB
  • 下载

JNI学习二:字符串参数传递与返回值

转载请注明出处! 原文地址链接:http://blog.csdn.net/zgyulongfei/article/details/7409441 在编程的时候我们不仅需要使用无参的函数,有...
  • zgyulongfei
  • zgyulongfei
  • 2012年03月30日 00:14
  • 13691

jni开发中遇到的问题4:如何在jni中进行字符串的合并

1:现状:            jni里面没有提供方法来直接执行字符串的追加 2:思路:           a-->  先将jstring变为c string           b-->  再者...
  • Cmh_csdn
  • Cmh_csdn
  • 2017年05月31日 22:25
  • 267

JNI 字符串转C字符串 与 C字符串转JNI字符串

char* jstringTostr(JNIEnv* env, jstring jstr) {             char* pStr = NULL;     jclass     jst...
  • hdxf2010
  • hdxf2010
  • 2018年01月08日 14:08
  • 5

Android学习JNI,使用JNI实现字符串加密

本节学习使用C语言加密字符串,大家都知道使用JAVA实现的加密都可以反编译的,而使用C写的加密是很难被反编译的。所以我们使用JNI学习如何使用C实现对字符串的加密。 首先:我们实现一个界面 布...
  • longwang155069
  • longwang155069
  • 2015年08月20日 15:22
  • 2415

Android Studio3.0开发JNI流程------JNI中字符串拼接的二种方式(C++)

字符串拼接在java中很常见,比如拼接url路径,那么到了jni开发中怎么使用java中拼接字符串呢?不废话了啊,直接来个案例分析我们将Android Studio3.0默认创建的工程文本显示从jni...
  • cloverjf
  • cloverjf
  • 2017年12月20日 13:47
  • 111

JNI中string 、 char* 和 jstring 两种转换

JNI中char* 和 jstring 的互相转换 JNI中string 和 jstring 的互相转换
  • xlxxcc
  • xlxxcc
  • 2016年04月09日 18:55
  • 14270
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JNI 字符串拼接方法
举报原因:
原因补充:

(最多只允许输入30个字)