在 JNI 开发中,可以使用 GetStringUTFChars 函数将 jstring 转换为 char*,如下所示:

jstring jstr = ...; // java层传下来的jstring
const char* cstr = env->GetStringUTFChars(jstr, NULL);
if (cstr == NULL) {
    // 处理获取char*失败的情况
} else {
    // 使用cstr进行操作
    // ...
    env->ReleaseStringUTFChars(jstr, cstr); // 释放获取的char*,避免内存泄漏
}

请注意,GetStringUTFChars 返回的是一个 const char*,但是在这个函数的调用结束之前,cstr 是可以被修改的。如果你需要一个非 constchar*,可以将其复制到一个新的 char* 中:

char* nonConstCstr = strdup(cstr);
// 使用nonConstCstr进行操作
// ...
free(nonConstCstr); // 释放nonConstCstr的内存

需要记住,在使用完 char* 后,必须调用 ReleaseStringUTFChars 函数来释放获取到的 char*,以避免内存泄漏。

JNI 开发:如何将 Java 层的 jstring 转换为非 const char*?

原文地址: https://www.cveoy.top/t/topic/qnKu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录