前言

今天介绍一下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头文件完整内容

相关文章

暂无评论

none
暂无评论...