У вас есть 2 варианта (я полагаю, вы хотите сравнить на равенство ...)
- Преобразовать обе строки jstring и сравнить
- Вызвать метод equals дляjstring (однако для этого требуется несколько вызовов JVM, поэтому он будет медленнее, чем вариант 1.)
Для варианта 1 вы хотите попробовать что-то вроде следующего.У меня нет исходного кода для варианта 2.
ПРЕДУПРЕЖДЕНИЕ Я не компилировал и даже не тестировал, но вы, вероятно, хотите что-то подобное.Я думаю, что есть ошибка, если строка java содержит что-то кроме символов ASCI.Я также не делал никакой проверки ошибок.
jbyteArray bytes = 0;
jclass localClass = env->FindClass("java/lang/String");
jmethodID methodID = env->GetMethodID(localClass, "getBytes", "()[B");
bytes = (jbyteArray)env->CallObjectMethod( jstr, methodID);
jint len = env->GetArrayLength( bytes);
char* data = new char[len+1];
env->GetByteArrayRegion( bytes, 0, len,(jbyte *)data);
data[len] = 0;
std::wstring result(data);
сделайте то же самое для второй jstring
, затем сравните 2 std::wstring
'*