JNI 中 C++ 字符串到 jstring 类型的转换

jstring CharsToString(JNIEnv *pEnv, const char *pChars, const char *pEncoding = "GB2312")
{
jclass clazz = pEnv->FindClass("java/lang/String");
jmethodID methodID = pEnv->GetMethodID(clazz, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = pEnv->NewByteArray(strlen(pChars));
pEnv->SetByteArrayRegion(bytes, 0, strlen(pChars), reinterpret_cast<const jbyte *>(pChars));
jstring strEncoding = pEnv->NewStringUTF(pEncoding);
jobject objString = pEnv->NewObject(clazz, methodID, bytes, strEncoding);
pEnv->DeleteLocalRef(strEncoding);
pEnv->DeleteLocalRef(bytes);

return reinterpret_cast<jstring>(objString);
}

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注