JNI之函数介绍三之字符串操作

NDK开发2023年7月24日 am8:08发布1年前 (2023)更新 3XCN.COM站长
1 0 0
广告也精彩
目录

前言

今天介绍一下JNI中字符串相关操作函数。

正文

NewString

jstring NewString(JNIEnv *env, const jchar *unicodeChars,jsize len);

利用 Unicode 字符数组构造新的 java.lang.String 对象。

unicodeChars为指向Unicode字符串的指针,len为Unicode字符串的长度。

如果成功,就返回字符串对象,否则返回NULL。

GetStringLength

jsize GetStringLength(JNIEnv *env, jstring string);

返回 Java 字符串的长度(Unicode 字符数)。

GetStringChars

const jchar * GetStringChars(JNIEnv *env, jstring string,jboolean *isCopy);

返回指向字符串的 Unicode 字符数组的指针。

该指针在调用ReleaseStringchars() 前一直有效。

如果 isCopy 非空, 则在复制完成后将 *isCopy 设为 JNI_TRUE。 如果没有复制,则设为 JNI_FALSE。

string是Java 字符串对象,isCopy是指向布尔值的指针。

如果成功,返回Unicode字符串的指针,否则返回NULL。

ReleaseStringChars

void ReleaseStringChars(JNIEnv *env, jstring string,const jchar *chars);

通知虚拟机平台相关代码无需再访问 chars。参数 chars 是一个指针,可通过GetStringChars() 从 string 获得。

string为java字符串对象,chars是指向Unicode字符串的指针。

NewStringUTF

jstring NewStringUTF(JNIEnv *env, const char *bytes);

利用 UTF-8 字符数组构造新 java.lang.String 对象。

bytes是指向 UTF-8 字符串的指针。

如果操作成功,返回Java字符串对象,否则返回NULL。

GetStringUTFLength

jsize GetStringUTFLength(JNIEnv *env, jstring string);

以字节为单位返回字符串string的 UTF-8 长度。

GetStringUTFChars

const char* GetStringUTFChars(JNIEnv *env, jstring string,jboolean *isCopy);

返回指向字符串的 UTF-8 字符数组的指针。

该数组在被ReleaseStringUTFChars() 释放前将一直有效。

如果 isCopy 不是 NULL, *isCopy 在复制完成后即被设为 JNI_TRUE。 如果未复制,则设为 JNI_FALSE。

这个跟GetStringChars()差不多,只不过一个是Unicode,一个UTF-8格式的字符串。

需要配套使用哈,不可搞混!

ReleaseStringUTFChars

void ReleaseStringUTFChars(JNIEnv *env, jstring string,const char *utf);

通知虚拟机平台相关代码无需再访问 utf。 utf 参数是一个指针,可利用GetStringUTFChars() 从 string 获得。

参考文章

  1. JNI完全手册]》

  2. NDK中jni.h头文件完整内容

 历史上的今天

版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
广告也精彩

相关文章

广告也精彩

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...

网站升级中

公告

近期网站升级中,可能存在一些bug。欢迎反馈 https://www.91es.com/we.html

本站域名

本站域名 : 91es.com3xcn.com。本站邮箱 : 站长邮箱 i@oorr.cn,通知邮箱we@oorr.cn ,如有更新,请看公告 。