Android开发NDK或C++和Java交互是经常用到jstring转换成C++想要的string或char*以下例子和使用方法。
#define FUNC_CPY_JSTRING(name,len,jstr) \
char name[len+1] = {0}; \
if(jstr != NULL)\
{ \
const char* __tmp_dn__ = env->GetStringUTFChars(jstr, NULL);\
strncpy(name,__tmp_dn__,len);\
env->ReleaseStringUTFChars(jstr,__tmp_dn__);\
}
使用方法:
JNIEXPORT jint JNICALL Java_com_Api_hello
(JNIEnv *env, jclass jc, jstring js){
// 这里使用宏
FUNC_CPY_JSTRING(user_dn,256,js);
//宏返回一个char数组这里直接强制转换即可
const char* p = (char *)user_dn;
//直接赋值给string即可
string str=user_dn;
LOGE("string=%s,char*=%s",str.c_str(),p);
}