vc6.0下使用
CString str;
num = atoi(str);
可以顺利取到num
V2010下使用相同的代码,报:“error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *””
按网上找的解决方法将CString 强制转换为char*,
num = atoi((LPSTR)(LPCTSTR)str);
编译不报错,运行成功。
但是num的结果却只是字符串的第一个数据。
最终解决办法:将atoi换成_ttoi 问题解决
vc6.0默认是ansi编码,所以atoi可以直接用,结果也正确;但是VS默认的编码方式是Unicode,Unicode下不能用atoi,而要使用_wtoi也可以直接使用_ttoi,它在 ANSI 编码系统中被编译成atoi(),而在 Unicode 编码系统中编译成_wtoi()。或者把vs改成ansi编码也行。
num = _ttoi(str);(_ttoi类似于_T,随着编码方式会改变)。