2010-04-08 4 views
1
는 여기에 "바보 같은 질문이다

두 jstrings는 JNI에 비교 될 수 그렇다면 어떻게Comparation는 JNI에서

+0

난 당신이 jstring으로하는'c_str'를 얻고'을 strcmp (c_str1, c_str2)를 사용 할 것 같아요;' –

답변

2

당신은 두 가지 옵션이 있습니다 (I 당신이 어떤지를 비교하려는 있으리라 믿고있어 ...)

?
  1. 이는 wstrings에 모두 jstrings 변환 및
  2. 를 호출 jstring으로의 equals 메소드 (그러나이 그렇게 옵션 1보다 느려집니다 JVM을 호출의 몇 가지가 필요합니다)를 비교 옵션의 경우 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

관련 문제