c++和Java的类型定义区别

最近,开发一些微服务,用c++和java联合开发。现在总结和记录以下工作学习中的心得:

1.c++的byte(尤其Vc和c#)为无符号类型,范围从0-255,例如,byte bt =-5,实际bt =251 ;Java的byte为有符号的,范围从-127-127。

2.c++的char类型为1个字节,而java的为两个字节,vc的char是有符号的。

3.加载动态库,vc的需要为文件全名,而QT和Java为了兼容Windows和Linux,一般只需要输入文件名,不需要扩展名即可。

4.long类型,在32位系统中是32位,在64位系统中是64位,一般建议用long long 或者_int64.

5.c++传递过来参数Int*和int&用IntByReference来代替(不建议用Int[]),char**用过PointerByReference来代替( 不建议用String[]代替),因为后面如果涉及内存释放,则传递回PointerByReference.GetValue() 即可。将char**转换为String的方法如下:ppCurveHeaderSet.getValue().getString(0,"UTF-8");

6.C++字符串比较相等可以==,Java需要用String.equal来处理。

7、c++输出到网页的字符串需要编码到UTF8模式,否则中文乱码。如果输出到URI则需要编码为escape编码。

char dec2hexChar(short int n) {
 if ( 0 <= n && n <= 9 ) {
  return char( short('0') + n );
 } else if ( 10 <= n && n <= 15 ) {
  return char( short('A') + n - 10 );
 } else {
  return char(0);
 }
}

short int hexChar2dec(char c) {
 if ( '0'<=c && c<='9' ) {
  return short(c-'0');
 } else if ( 'a'<=c && c<='f' ) {
  return ( short(c-'a') + 10 );
 } else if ( 'A'<=c && c<='F' ) {
  return ( short(c-'A') + 10 );
 } else {
  return -1;
 }
}





string escapeURL(const string &URL)
{
 string result = "";
 for ( unsigned int i=0; i<URL.size(); i++ ) {
  char c = URL[i];
  if (
   ( '0'<=c && c<='9' ) ||
   ( 'a'<=c && c<='z' ) ||
   ( 'A'<=c && c<='Z' ) ||
   c=='/' || c=='.'
   ) {
   result += c;
  } else {
   int j = (short int)c;
   if ( j < 0 ) {
    j += 256;
   }
   int i1, i0;
   i1 = j / 16;
   i0 = j - i1*16;
   result += '%';
   result += dec2hexChar(i1);
   result += dec2hexChar(i0);
  }
 }
 return result;
}


例子:




wstring test = L"南";
string test1 = escape(utility::conversions::to_utf8string(test));

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余山水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值