在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怎么转成char要char!! 不要const char!!

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

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