jstring 与 wchar_t 的那点事
jstring 对应java的 String 这个大家都知道
1 wchar_t* w2js(JNIEnv* env, jstring str) 2 { 3 int len = env->GetStringLength(str); 4 wchar_t *w_buffer = new wchar_t[len]; 5 memset(w_buffer,0,len+1); 6 w_buffer[len]=‘\0‘; 7 wcsncpy(w_buffer,(wchar_t *)env->GetStringChars(str,0),len); 8 env->ReleaseStringChars(str,(const unsigned short *)w_buffer); 9 return w_buffer; 10 } 11
1 //jstring 转换成 wchar_t 2 //env :JNIEnv jni操作 不可或缺的 3 //jstr:jstring 源字符(来自java) 4 //dst :转换后的结果,四字节wchar_t 似乎linux专用 5 //return : 无 6 void js2w(JNIEnv *env,jstring jstr,wchar_t *dst) 7 { 8 //获取java字符串的长度 9 jsize jstr_len = env->GetStringLength(jstr); 10 //获取java字符串的jchar指针 11 const jchar * pjstr = env->GetStringChars(jstr,0); 12 13 tc_char *ptmp = new tc_char[jstr_len+1]; 14 memset(ptmp,0,sizeof(tc_char) * (jstr_len+1)); 15 //转换 以数组的形式把 jchar转换到wchar_t 16 for(int i=0 ;i<jstr_len;i++) 17 memcpy(&ptmp[i],&pjstr[i],2); 18 19 wcscpy(dst,ptmp); 20 delete [] ptmp; 21 }
1 //wchar_t 转换成 jstring 2 //env :JNIEnv jni操作 不可或缺的 3 //src:wchar_t 源字符 四字节似乎linux专用 4 //return : 转换完成以后的结果jstring 5 jstring w2js(JNIEnv *env,wchar_t *src) 6 { 7 int src_len = wcslen(src); 8 jchar * dest = new jchar[src_len+1]; 9 memset(dest,0,sizeof(jchar)*(src_len+1)); 10 11 for(int i =0 ;i<src_len;i++) 12 memcpy(&dest[i],&src[i],2); 13 jstring dst = env->NewString(dest,src_len); 14 delete [] dest; 15 return dst; 16 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。