51Testing软件测试网u7F R)G6H/|,o #include <iostream>51Testing软件测试网wG&hk!_d sT #include <string> l}"c7hcd0#include "bupt_cist_nlp_ner_ChineseNER.h" _+o0gl2G6}2A;E0#include "windows.h"51Testing软件测试网8I*Pbt/v3\'b ]V7k'I5`0using namespace std;51Testing软件测试网5q#h3C)e
h7]2Yo IS7~]!ii
YSu ]'n p0char* jstringToWindows( JNIEnv *env, jstring jstr ) 51Testing软件测试网t7vL&J:c%KRF { ,X5S)\J3Al0 int length = env->GetStringLength(jstr); UF5w-[[
_L8W$N
WX"mW0 const jchar* jcstr = env->GetStringChars(jstr, 0); ,vpi/STu$_0 char* rtn = (char*)malloc(length*2+1); 51Testing软件测试网oVb*r7b/N$u9lX int size = 0; 51Testing软件测试网-G9bZ&y"r size = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,(length*2+1), NULL, NULL); h [C])n9WH,?R0 if( size <= 0 ) 51Testing软件测试网#@7X9Ki6^'i
N7w return NULL; jB` u:oj'~G[0 env->ReleaseStringChars(jstr, jcstr); 51Testing软件测试网g7M.Kpb*Y rtn[size] = 0; 'f(x!n0^mS+^"_+l0 return rtn; 51Testing软件测试网Maf&[#X*]'o'Aw } 51Testing软件测试网
Qqxz4^f;V+vy jstring WindowsTojstring( JNIEnv *env, const char* str ) 51Testing软件测试网K8Xk`0j4p6e { 51Testing软件测试网r*Y:[&`d"k!o jstring rtn = 0; e7e.GC3EZ}_0 int slen = strlen(str); 51Testing软件测试网2tFp0PD}ND&T unsigned short* buffer = 0; qs
wl+Jk0 if( slen == 0 ) 51Testing软件测试网$sQob7a0nD2~ rtn = env->NewStringUTF(str); 51Testing软件测试网_a3qN^L{ else 51Testing软件测试网)} lItH1rf { 51Testing软件测试网8y&t(@;sA`O int length = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)str, slen, NULL, 0); !e|JKf!M0 buffer = (unsigned short*)malloc(length*2 + 1); DMy1Bi/Tt0 if( MultiByteToWideChar(CP_ACP, 0, (LPCSTR)str, slen, (LPWSTR)buffer, length) >0) fa$T` \l*|M x0 rtn = env->NewString((jchar*)buffer, length); 'np^6jM0 } 51Testing软件测试网)|6O/_gN&y RVH if(buffer) 51Testing软件测试网7iv{]S(Z!@P$h free(buffer); 51Testing软件测试网
{:^2s(gW-LX(uX/S return rtn; 51Testing软件测试网#?re{0[a } 51Testing软件测试网"E]C5`,y char* U2G(const char* utf8)
r9DWy'N8E/y0{51Testing软件测试网8A9s7d2l7v5M8@ int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);51Testing软件测试网2Ct*I ]H+k wchar_t* wstr = new wchar_t[len+1];51Testing软件测试网 W;Hv#A
f&w.Tb memset(wstr, 0, len+1); A&OAO~ }D0 MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);51Testing软件测试网,A.F\F2sVla2odA"S len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL); 'k!Ux?^8]0 char* str = new char[len+1];51Testing软件测试网[8W
mi\.U6oS memset(str, 0, len+1); GHh
Gge0z0 WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL); 1C2znA)?,} Z0 if(wstr) delete[] wstr; krw7N:S0 return str; 4B-\if:q5j#n0} [/y0A1UU$ynU0char* G2U(const char* gb2312)51Testing软件测试网`qG-G)l w&} { n.K8a&]8zQ0 int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0); Q4ipkz*l1S0 wchar_t* wstr = new wchar_t[len+1]; $A2B#l6Ara"Wu1z0 memset(wstr, 0, len+1); )?
v4xM$Y9T~
_3v0 MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);51Testing软件测试网 Q
uE0MF len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);51Testing软件测试网-A:f(n e8~-? char* str = new char[len+1];
u[4`
C0o7Zm0 memset(str, 0, len+1);51Testing软件测试网)p1{)\"Ig1[$dV/E WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL); ;n#u:[]3H0 if(wstr) delete[] wstr; oH%z2m{ Q*GD0 return str; `7wR5rP0}51Testing软件测试网h(P D O6q3@ JNIEXPORT void JNICALL Java_bupt_cist_nlp_ner_ChineseNER_say(JNIEnv *env, jobject obj, jstring msg) }tc$S(F/k0{51Testing软件测试网B7|g|X
n!D"mn|#J const char* pmsg = env->GetStringUTFChars(msg, NULL); 'j*w'Cjo9?
P0 cout << pmsg << endl;51Testing软件测试网R;h?s[6@\~!n }51Testing软件测试网 t)TMY cJ^ JNIEXPORT jstring JNICAL Java_bupt_cist_nlp_ner_ChineseNER_process(JNIEnv *env, jobject obj, jstring line) bt Y?Ot3qX0{51Testing软件测试网#Z9M}*\#R const char* pmsg = jstringToWindows(env, line); *h"SS5G[/v
?0 cout << pmsg << endl;51Testing软件测试网 Y%Tf2P i // process51Testing软件测试网1IU,W;s;ZR1p9w return WindowsTojstring(env, res.c_str()); #u-diHdTH0}51Testing软件测试网AZp`3[ |