JNI的string参数传递问题

参考了别人的网上的代码,发觉微软在VS2005,VS2008中默认采用UNICODE编码其实对JNI也是很方便的,

输入参数转化为VC中的指针,不要用getStringUTFChars,这样直接就是UNICODE,和VC默认的直接符合,并且,中文也是UNICODE,

相当的匹配:

 WCHAR* p = (WCHAR *)(env->GetStringChars(conn_name,0));

 

输出参数返回

jstring rtn = 0;

....

 rtn = (env)->NewString( (jchar*)buffer, length );

buffer中也存储的是UNICODE,很方便,由于C++中指针的灵活,即指针可以被造型成指向任意类型,因而,指针的造型最不用担心,

也对于C的灵活有了更深入的认识.

另外,_T("allocat memory in"))在VC中可将此String转化为UNICODE.

sizeof(list);可用于计算struct的大小,不必担心uNICODE等,

还有VC WINAPI有些函数会传进去一个指针,一个字符串的长度,并且他们是往外带返回值的,那我怎么知道返回的字符串的真正

长度呢,用_tcslen()(UNICODE和ANSI通用)函数来判断函数返回的指针指向的字符串的真正长度.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值