在Android开发中,可以使用JNIEnv环境对象中的GetStringUTFChars函数将jstring类型转换为const char*类型,然后再将const char*类型转换为std::string类型。

以下是一个示例代码:

#include <jni.h>
#include <string>

std::string jstringToString(JNIEnv* env, jstring jstr) {
    const char* cstr = env->GetStringUTFChars(jstr, nullptr);
    std::string str(cstr);
    env->ReleaseStringUTFChars(jstr, cstr);
    return str;
}

在上述代码中,jstringToString函数将jstring类型转换为std::string类型。首先,使用GetStringUTFChars函数将jstring类型转换为const char*类型,并将其赋值给cstr。然后,使用std::string的构造函数将const char*类型转换为std::string类型。最后,使用ReleaseStringUTFChars函数释放jstring类型对应的内存空间。

要使用上述函数,可以在C++代码中引入JNI头文件,并在对应的JNI方法中将JNIEnv环境对象和jstring参数传递给jstringToString函数进行转换。示例如下:

#include <jni.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_nativeMethod(JNIEnv* env, jobject /* this */, jstring jstr) {
    std::string str = jstringToString(env, jstr);

    // 在这里可以使用std::string类型的str进行相关操作

    return env->NewStringUTF(str.c_str());
}

在上述代码中,Java_com_example_myapplication_MainActivity_nativeMethod是一个JNI方法,它接受一个jstring参数,并返回一个jstring类型的结果。首先,调用jstringToString函数将jstring参数转换为std::string类型的str。然后,可以在这个JNI方法中使用str进行相关操作。最后,使用env->NewStringUTF函数将str转换为jstring类型并返回。

注意:在使用完GetStringUTFChars函数后,一定要调用ReleaseStringUTFChars函数释放对应的内存空间,以避免内存泄漏

android开发: 在C++代码里jstring转换成stdstring 怎么写

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

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