最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑:
1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.csdn.net/topics/392440547
2)类的变量默认值不同 .net默认是类型的默认值,C++没有默认值的。要避免C++的类成员没有默认值的意外行为。
3)a[i][j]和a[i,j]是不相同的。
4)VS2013 C++程序的默认堆栈大小为1MB,太小,有时候会堆栈溢出,可以参考 https://blog.csdn.net/feeltouch/article/details/9400095
5)std::remove不能从vector中移除元素,需要配合erase使用。
6)VS2013C++工程调试时看不到局部变量的值:设置问题项目右键属性打开后--Configuration Properties --->c/c++ ----> Optimization下面选择第一项选Disabled(/od)
7)C++浮点数在计算过程中保留有效数字,可以使用如下代码,但是耗时较多
double round(double number, unsigned int bits) {
stringstream ss;
ss << fixed << setprecision(bits) << number;
ss >> number;
return number;
}
8)C#项目怎么来调用C++的动态库:
这里的result是C++动态库传出的参数,在C#里面用StringBuilder来接受,在C#里面调用GetProvincePrice时,提前给StringBuilder申请好空间。
bool GetProvincePrice(char * param_string, char * result);
[DllImport("CPlusPlus.dll", EntryPoint = "GetProvincePrice", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public extern static bool GetProvincePrice(string exlist, StringBuilder result);