2025年字符串转int c(字符串转intc++代码)

字符串转int c(字符串转intc++代码)I C C 中的 Java 字符串数组类型 II 获取字符串数组长度 III 获取字符串数组元素 IV 类型强转 jobject gt jstring V 字符串转换 jstring gt char VI 字符串释放 VII 部分代码示例 I C C

大家好,我是讯享网,很高兴认识大家。




  • ​​I . C/C++ 中的 Java 字符串数组类型​​
  • ​​II . 获取字符串数组长度​​
  • ​​III . 获取字符串数组元素​​
  • ​​IV . 类型强转 ( jobject -> jstring )​​
  • ​​V . 字符串转换 ( jstring -> char* )​​
  • ​​VI . 字符串释放​​
  • ​​VII . 部分代码示例​​

I . C/C++ 中的 Java 字符串数组类型


JNI 中 C/C++ 代码里的 Java 字符串数组类型 :​ ​jobjectArray​ ;

① JNI 类型现状 :​ 在 JNI 中没有定义 Java 字符串数组类型 , 只定义了 Java 字符串类型 jstring ;

② Object 对应 jobject :​ 在 C/C++ 环境中 jobject 类型对应 Java 中的 Object 类型 , Java 中字符串也是 Object 类型的 ;

③ 字符串数组类型 :​ 因此在 C/C++ 环境中使用 对象数组 jobjectArray 来当做 字符串数组类型 ;

II . 获取字符串数组长度


1 . 前提条件 :​ Java 层传入参数 jobjectArray stringArray , 该参数对应 Java 代码中的 String[] stringArray 参数 ;

下面的 GetArrayLength 方法的 stringArray 参数 , 就是 jobjectArray 类型的 ;

2 . 获取字符串数组长度 代码示例 :​ 其中返回值 jsize 是 int 类型的别名 ;

III . 获取字符串数组元素


C/C++ 代码中获取指定索引的 Java 字符串数组类型的元素 ;

1 . 调用方法 :​ 调用 JNIEnv * env 的 GetObjectArrayElement 方法 , 可以获取指定索引的 jobject 引用类型变量 ;

2 . 方法原型 :

3 . GetObjectArrayElement 参数说明 :

① jobjectArray array 参数 : 由 Java 层传入的 Java 对象数组 ;

② jsize index 参数 : 要获取的数组元素的索引值 ;

4 . 获取对象数组指定元素代码示例 :

其中的参数 stringArray 是 jobjectArray 类型的 , 由 JNI 方法传入 ;

其中的参数 i 是 int 类型的 , 是要获取的元素的索引值 , 从 0 开始计数 ;

IV . 类型强转 ( jobject -> jstring )


将 jobject 转为 jstring 类型 :​ string_object 是 jobject 类型变量 ;


讯享网

V . 字符串转换 ( jstring -> char* )


1 . GetStringUTFChars 方法 :​ 将 jstring 类型字符串 ( Java 中的字符串 ) 转为 char* 类型字符串 ( C/C++ 中的字符串 ) ;

2 . 函数原型 :​ jstring string 参数是 Java 通过 JNI 传入的 , 代表 Java 字符串 ;

3 . jboolean* isCopy 参数 :​ 该参数用于指定将 jintArray 类型的变量 , 转为 jint * 指针类型的变量 , 新的指针变量的生成方式 ;

① 将 该参数设置成指向 JNI_TRUE 的指针 : 将 int 数组数据拷贝到一个新的内存空间中 , 并将该内存空间首地址返回 ;

② 将 该参数设置成指向 JNI_FALSE 的指针 : 直接使用 java 中的 int 数组地址 , 返回 java 中的 int 数组的首地址 ;

③ 将 该参数设置成 NULL ( 推荐 ) : 表示不关心如何实现 , 让系统自动选择指针生成方式 , 一般情况下都不关心该生成方式 ;

④ jboolean 类型取值 : jboolean 的取值只能是 0 和 1 , 也可以使用 JNI_FALSE 和 JNI_TRUE 宏定义 ;

4 . jstring 字符串转换 为 char* 字符串示例 :

VI . 字符串释放


1 . ReleaseStringUTFChars 方法 :​ 将 Java 字符串 和 C/C++ 字符串都释放 ;

2 . 函数原型 :

jstring string 参数是 Java 通过 JNI 传入的 , 代表 Java 字符串 ;

const char* utf 参数是通过 GetStringUTFChars 方法将上面的 Java 字符串转成的 C/C++ 字符串 ;

VII . 部分代码示例


部分代码示例 :

代码执行结果 :

限于篇幅就不再贴完整代码了 , 去下载博客资源有全套的 JNI 文档教程 , 及博客源码

小讯
上一篇 2025-05-05 23:01
下一篇 2025-06-14 16:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/163841.html