Cstring 转 int 型问题(error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”))

Cstring 转 int 型 问题
(error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”)
 

在VC6.0下用

    CString str;

    num = atoi(str);

就可以顺利取到num;
但是同样代码拿到VS2010(vc++)就报错,

error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”;
于是把CString 强制转换为char*,

num = atoi((LPSTR)(LPCTSTR)str);
编译不报错,运行成功。

但是后面发现,本来str="123",num应该是123,

结果却只是1,试了其他的都是只取最前面一位。
后面百度中无意发现,

原来是,vc6.0默认是ansi编码,所以atoi可以直接用,结果也正确;

但是VS2010(vc++)默认的编码方式是Unicode,

Unicode下不能用atoi,

而要使用_wtoi 也可以直接使用_ttoi

它在 ANSI 编码系统中被编译成atoi(),

而在 Unicode 编码系统中编译成_wtoi()。

或者把vs改成ansi编码也行。
num = _ttoi(str);(_ttoi类似于_T,随着编码方式会改变)。

你可能感兴趣的:(Cstring 转 int 型问题(error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”)))