2011-08-08 9 views
7

Używam typu basic_string<wchar_t> i trzeba go przekonwertować na ciąg znaków, aby przejść przez warstwę JNI. Zastanawiam się, jaki jest najlepszy sposób na to. Mam funkcję, która może dać mi std::string z mojego typu basic_string<wchar_t>, więc odpowiedź na to również będzie fajna.Konwersja z basic_string do jstring

Pozdrawiam.

+2

Zauważ, że 'std :: basic_string ' jest typedef'ed do ' std :: wstring'. –

+1

możliwy duplikat [Jak przekonwertować jstring na wchar_t *] (http://stackoverflow.com/questions/68042/how-do-i-convert-jstring-to-wchar-t) –

+0

Próbuję zrobić odwrotny z tego i próbuję sprawdzić, czy mogę uniknąć użycia znaku * w dowolnym miejscu. – sparkFinder

Odpowiedz

5

Konwersja std :: basic_string na UTF-8. Spójrz, co robi konwersja łańcuchów -> string.

Firma Sun ma samouczek dotyczący interfejsu JNI, który pokazuje, jak konwertować znak * w łańcuch znaków (używając niektórych procedur konwersji UTF). Można używać wstring-> ciąg, a następnie przechodzą w string.c_str() do funkcji NewStringUTF:

Nietestowane Kod:

JNIEXPORT jstring JNICALL StringTest(JNIEnv *env) { 
    const char* test = "something"; 
    return (*env)->NewStringUTF(env, test); 
} 
+0

link uszkodzony teraz –

+0

Który spodziewa się ** const char ***. Co jeśli muszę przekonwertować z ** std :: string **? –

+2

@Igor Użyj elementu std :: string .c_str(). –