目录
前言
今天介绍一下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 获得。
参考文章
-
《]》
-
《》