android开发: 在C++代码里jstring转换成stdstring 怎么写
在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函数释放对应的内存空间,以避免内存泄漏
原文地址: https://www.cveoy.top/t/topic/irYi 著作权归作者所有。请勿转载和采集!