如何用JNIjobjectarray(JavaString[])填充C++char[]
How to fill a C++ char[] with an JNI jobjectarray (Java String[])?
我认为这个问题说明了一切。我使用安卓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
条目。
我搜索了很多,找到了关于strcpy
或memcpy
的信息,但到目前为止没有任何结果。
现在可以工作了。我不知道,是否可以直接使用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);}
相关文章:
- 为什么我的 Char* 在填充整数后为空?
- 无法获取已填充堆栈<char>的顶部元素
- 用 int 值填充 char 数组
- C++用用户输入在循环中填充 char 数组:输入整个字符串时到底发生了什么?
- 缓冲区用不需要的数据填充 char 数组中的最后一个空格
- 如何填充项目为 8 个字符的集合?(std::set<char [8]>)
- 如何创建 std::vector of char/std::byte,其中第一个字节对齐到 16 个字节,但没有填充
- 在函数内部填充和比较char*
- 如果我有一个固定大小的填充ascii数字的char数组,我知道它指的是一个无符号整数,那么将其转换为无符号整数的最快方法
- 如何在 c++ 中填充指针数组,类型 char
- 正在检查未完全填充的数组中的char out是否为空
- istream::read未正确填充char数组
- Python使用ctypes传递char *数组并填充结果
- 如何使用 boost.python 将预填充的"unsigned char*"缓冲区传递给C++方法?
- 填充标准::矢量缓冲区的最佳方法<char>
- 填充Unsigned Char数组
- 用const char*填充wstring的最佳方式
- 如何从c++返回char **并在Python中使用ctypes将其填充到列表中
- 在char数组中填充空格
- 如何用JNIjobjectarray(JavaString[])填充C++char[]