欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-15 20:26:49
...

最近,开发一些微服务,用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));