2011-08-08 14 views
7

Estoy usando un tipo basic_string<wchar_t> y necesito convertirlo en un jstring para pasar a través de una capa JNI. Me pregunto cuál es la mejor manera de hacerlo. Tengo una función que me puede dar un std::string de mi tipo basic_string<wchar_t>, por lo que una respuesta a eso también sería genial.Conversión de basic_string a jstring

aplausos.

+2

Tenga en cuenta que 'std :: basic_string ' 'se typedef'ed a std :: wstring'. –

+1

posible duplicado de [¿Cómo convierto jstring a wchar_t *] (http://stackoverflow.com/questions/68042/how-do-i-convert-jstring-to-wchar-t) –

+0

Estoy tratando de hacer lo contrario de eso, y estoy tratando de ver si puedo evitar usar un char * en cualquier lugar allí. – sparkFinder

Respuesta

5

Necesitarás convertir std :: basic_string en UTF-8. Mire en lo que hace su wstring -> cadena de conversión.

Sun tiene un tutorial de JNI que muestra cómo convertir un char * en un jstring (usando algunas rutinas de conversión UTF). Usted puede utilizar su wstring-> cadena, entonces pasar en string.c_str() a la función NewStringUTF:

Código No comprobado:

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

enlace roto por ahora –

+0

que espera un const char ** ***. ¿Qué pasa si necesito convertir de ** std :: string **? –

+2

@Igor Use el miembro std :: string .c_str(). –