TopMetaFizick
@TopMetaFizick
Все двоит и троит...

Как из jni-метода вернуть String?

Работаю в java с JNI, из С++ метода, мне должна прийти строка, но как это реализовать, если С++ отправляет char [] а java принимает String ?
  • Вопрос задан
  • 1197 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
JNIEXPORT jstring JNICALL Java_Test_saySomething(JNIEnv *env, jobject obj, jstring jStr) {
    // Получаем указатель на массив символов String
    const char *cStr = (*env)->GetStringUTFChars(env, jStr, NULL);
    if (cStr == NULL) return NULL;

    // Выводим полученное
    printf("%s\n", cStr);
    // Освобождаем выделенную под строку область памяти
    (*env)->ReleaseStringUTFChars(env, jStr, cStr);
 
    // Получаем новый массив символов от пользователя
    char buf[128];
    scanf("%s", buf);
 
    // Преобразовываем массив символов в String
    return (*env)->NewStringUTF(env, buf);
}

Только учтите, что Java хранит строки в кодировке Modified UTF-8, а в C вы работаете с ANSI-кодировками. Поэтому, если понадобиться работать с кириллицей, то придётся озаботиться перекодированием.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Может ты уже прочитаешь документацию?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы