这是一个“愚蠢的问题:在JNI中可以比较两个jstrings吗?如果是这样的话?”
答案 0 :(得分:2)
你有2个选项(我假设你想比较相等......)
对于选项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
的