The jstring type represents strings in the Java virtual machine, and is different from the regular C string type (a pointer to characters, char *). So we cannot use a jstring as a normal C string. We must use the appropriate JNI functions to convert jstring objects to C/C++ strings. The JNI supports conversion both to and from Unicode and UTF-8 strings. Unicode strings represent characters as 16-bit values, whereas UTF-8 strings use an encoding scheme that is upward compatible with 7-bit ASCII strings. UTF-8 strings act like NULL-terminated C strings.
jstring, which requires a subroutine call to in order to convert a Java Unicode string (2 bytes) to a C-style char* string (1 byte UTF-8 format).
To convert a jstring to a C-style string, you might write code like the following:
1 2 3 4 5 6 7 8 9 | JNIEXPORT void JNICALLJava_MyJavaClass_printName(JNIEnv *env, jobject obj, jstring name) { const char *str= (*env)->GetStringUTFChars(env,name,0); printf(“%s”, str); //need to release this string when done with it in order to //avoid memory leak (*env)->ReleaseStringUTFChars(env, name, str); } |
To convert a C-style string to jstring , you can use the (*env)->NewStringUTF() function to create a new jstring from a C-style string. For example, a C function that needs to return a Java string could contain the following code:
1 2 3 4 | JNIEXPORT jstring JNICALLJava_MyJavaClass_getName(JNIEnv *env, jobject obj) { return (*env)->NewStringUTF(env, “Electrofriends.com”); } |
Description :
This is the one stop educational site for all Electronic and Computer students. If you want to learn something new then we are here to help. We work on Microcontroller projects, Basic Electronics, Digital electronics, Computer projects and also in basic c/c++ programs.
#Home #Sitemap #Resources #Terms of Use
Copyright©2012 electrofriends.com All Rights Reserved
Contact:info@electrofriends.com