我将使用JNI实现接收两个字符串数组的C ++本机函数,将它们连接成一个字符串数组,并返回大字符串数组。 实际上,我将THIS扩展到字符串数组。 如何填写以下代码?
Java端代码:
String [] strarrayA={"abc", "def"}, strarrayB = {"123","456"};
String[] strarrayC = strarrayFromJNI(strarrayA, strarrayB);
public native String[] strarrayFromJNI(String[] first, String[] second);
原生代码:
jarray
Java_com_androidMexample_MainActivity_strarrayFromJNI(
JNIEnv *env, jobject /* this */, jarray a, jarray b){
jsize alen = env->GetArrayLength(a);
jsize blen = env->GetArrayLength(b);
...
(How can I concatenate a and b to obtain c, result <- a, b ?)
return c;
}
如何使用strarrayC = {“abc”,“def”,“123”,“456”}获取返回的字符串数组?提前谢谢。
答案 0 :(得分:2)
如果你绝对必须,可以这样:
jobjectArray ab = env->NewObjectArray(alen+blen, env->FindClass("java/lang/String"), 0);
jsize i;
for(i=0;i<alen;i++)
env->SetObjectArrayElement(ab, i, env->GetObjectArrayElement(a, i));
for(i=0;i<blen;i++)
env->SetObjectArrayElement(ab, alen+i, env->GetObjectArrayElement(b, i));
但你可以在Java中做同样的事情。它不会明显变慢,但更容易阅读和理解。