如何用JNIjobjectarray(JavaString[])填充C++char[]

How to fill a C++ char[] with an JNI jobjectarray (Java String[])?

本文关键字:填充 C++char JavaString 何用 JNIjobjectarray      更新时间:2023-10-16

我认为这个问题说明了一切。我使用安卓NDK。我不能包括std,请不要使用向量,只是简单明了的c++。到目前为止,我拥有的是:

//filePaths=jobjectarray=Java字符串[]int elementCount=env->GetArrayLength(filePaths);//这应该是带有filePaths的char[]char*cppFilePaths[elementCount];for(int i=0;i<elementCount;i++){jstring jFilePath=(jstring)(env->GetObjectArrayElement(filePaths,i));const char*cppFilePath=env->GetStringUTFChars(jFilePath,0);//这行不通!cppFilePaths[i]=cppFilePath;env->ReleaseStringUTFChars(jFilePath,cppFilePath);env->DeleteLocalRef(jFilePath);}

使用此代码,我将得到cppFilePaths,其中包含filePaths中最后一个String的elementCount条目。

我搜索了很多,找到了关于strcpymemcpy的信息,但到目前为止没有任何结果。

现在可以工作了。我不知道,是否可以直接使用GetStringUTFChars的结果,但到目前为止没有错误。。。

const char*cppFilePaths[elementCount]={};for(int i=0;i<elementCount;i++){jstring jFilePath=(jstring)(env->GetObjectArrayElement(filePaths,i));cppFilePaths[i]=env->GetStringUTFChars(jFilePath,0);env->DeleteLocalRef(jFilePath);}