前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JNI编程之字符串处理

JNI编程之字符串处理

作者头像
故乡的樱花开了
发布2023-10-22 14:09:58
2660
发布2023-10-22 14:09:58
举报
文章被收录于专栏:Android技术专栏Android技术专栏

  java中的字符串类型是String,对应的jni类型是jstring,由于jstring是引用类型,所以我们不能像基本数据类型那样去使用它,我们需要使用JNIEnv中的函数去处理jstring,下面介绍一些常用的字符串处理函数。

  1.GetStringUTFChars()

  作用:将jstring类型转化为c中的const char *类型   参数说明:   string:jstring类型字符串   isCopy:两种取值,JNI_TRUE/JNI_FALSE;JNI_TRUE表示返回的是c字符串是java类型字符串的拷贝,JNI_FALSE表示c字符串直接指向java字符串;实际开发中,我们不关心这个值是什么,直接传入nullptr即可

代码语言:javascript
复制
const char* GetStringUTFChars(jstring string, jboolean* isCopy)
    { return functions->GetStringUTFChars(this, string, isCopy); }

  2.ReleaseStringUTFChars()

  作用:用于释放通过GetStringUTFChars()函数获取的c字符串的内存,使用完这个c字符串之后一定要用这个函数释放内存,防止内存泄漏   参数说明:   string:jstring类型的字符串   utf:对应的c字符串

代码语言:javascript
复制
void ReleaseStringUTFChars(jstring string, const char* utf)
    { functions->ReleaseStringUTFChars(this, string, utf); }

  3.NewStringUTF()

  作用:将c字符串转化为jstring类型

代码语言:javascript
复制
jstring NewStringUTF(const char* bytes)
    { return functions->NewStringUTF(this, bytes); }

  4.NewString()

  作用:将utf-16字符数组转化为jstring字符串   参数说明:   unicodeChars:字符数组   len:字符数组的长度

代码语言:javascript
复制
jstring NewString(const jchar* unicodeChars, jsize len)
    { return functions->NewString(this, unicodeChars, len); }

  5.GetStringUTFLength()

  作用:获取jstring字符串的utf-8编码字符串长度

代码语言:javascript
复制
jsize GetStringUTFLength(jstring string)
    { return functions->GetStringUTFLength(this, string); }

  6.GetStringLength()

  作用:获取jstring字符串的utf-16编码字符串长度

代码语言:javascript
复制
jsize GetStringLength(jstring string)
    { return functions->GetStringLength(this, string); }

  7.GetStringChars()

  作用:将jstring类型的字符串转化为utf-16编码的字符数组

代码语言:javascript
复制
const jchar* GetStringChars(jstring string, jboolean* isCopy)
    { return functions->GetStringChars(this, string, isCopy); }

  8.ReleaseStringChars()

  释放由GetStringChars()函数获取的字符数组的内存

代码语言:javascript
复制
void ReleaseStringChars(jstring string, const jchar* chars)
    { functions->ReleaseStringChars(this, string, chars); }

  9.GetStringRegion()

  用于从Java字符串对象中获取指定范围的UTF-16编码的字符数据并存储在一个字符数组中

代码语言:javascript
复制
void GetStringRegion(jstring str, jsize start, jsize len, jchar* buf)
    { functions->GetStringRegion(this, str, start, len, buf); }

  10.GetStringUTFRegion()

  用于从Java字符串对象中获取指定范围的UTF-8编码的字符数据并存储在一个字符数组中

代码语言:javascript
复制
void GetStringUTFRegion(jstring str, jsize start, jsize len, char* buf)
    { return functions->GetStringUTFRegion(this, str, start, len, buf); }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档