字符串数据类型AndroidC++NDK中如何操作字符串数据类型呢?

Android C++ NDK中如何操作字符串数据类型呢,在Adroid项目中使用NDK进行开发,最基础和最常见的就是对字符串引用数据类型的操作。让我们来看看如何操作字符串。
在Android项目中使用NDK进行开发,最基础和最常见的就是对字符串引用数据类型的操作。让我们来看看如何操作字符串。工具/原料AndroidStudio3安卓手机方法/步骤1NDK操作字符串与字符串有关的操作在JNI里面把Java中的字符串当成是引用数据类型进行处理。这些引用类型并不能像原生C/C++直接拿来使用,而是需要必要的函数进行转换。如图NewString函数和NewStringUTF函数。步骤阅读2C++文件中创建字符串我们可以在Native代码中用NewString函数构建Unicode编码格式的字符串对象,用NewStringUTF函数构建UTF-8编码格式的字符串对象(如图:创建jstring对象返回给Java层.png)。如果有内存溢出的情况,那么result就会是NULL以通知Native代码抛出异常。NewStringUTF函数创建字符串:jstringresult=_env->NewStringUTF(\"我是C++层的字符串\"); 步骤阅读3把Java字符串转换成Native字符串NDK开发中为了在C++代码中使用Java字符串,我们需要将Java字符串进行转换成C++字符串。用GetStringChars函数将Unicode格式的Java字符串转换成C字符串;用GetStringUTFChars函数将UTF-8格式的Java字符串转成C字符串。其中第二个参数是可选参数,名字是isCopy,可以让我们确定转换后返回的C++字符串地址是指向副本还是指向堆中的固定对象。(如图:将Java字符串转换成C++字符串.png)步骤阅读4在C++中使用完字符串要进行释放通过GetStringChars函数和GetStringUTFChars函数获得的C++字符串,在Native代码中使用完以后要正确地释放掉(如图:释放掉获取的C++字符串.png),否则可能会引起内存溢出。JNI中为我们提供了两个类型的释放函数,用ReleaseStringChars释放Unicode编码格式的字符串,用ReleaseStringUTFChars释放UTF-8编码格式的字符串。步骤阅读END注意事项在Native层分配的资源一定要记得进行释放。否则会引起内存溢出。使用JNI函数转换时,一定根据编码格式进行选择,UTF-8的格式的字符串在创建时使用NewUTFString,转换时使用GetStringUTFChars,Unicode的格式的字符串在创建时使用NewString,转换时使用GetStringChars。

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/qzdnooy6EB.html

(0)

相关推荐