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));
推荐阅读
-
c++ 模板类,方法返回值类型是typedef出来的,或者是auto,那么此方法在类外面如何定义?
-
Java自学-集合框架 HashMap和Hashtable的区别
-
java包装类和值类型的关系
-
C/C++ return *this和return this的区别
-
java 抽象类和接口的区别详细解析
-
Java overload和override的区别分析
-
装箱和拆箱-值类型和引用类型的区别
-
java,hibernate和sqlserver对应的数据类型表
-
Java中parseInt()和valueOf(),toString()的区别
-
Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别