1、VS2010写个小程序,涉及到浮点数的计算,但是在将字符串(CString)转换成double时遇到了问题。


2、首先,我是这样做的:

CString testStr = _T("3.1415926");
double dbNum = atof(testStr);

报错如下:

“atof”: 不能将参数 1 从“CString”转换为“const char *”
没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符


解决方案一:修改项目的字符集

将其从Unicode改为多字节字符集:

CString转doubl饿_数据类型转换

但是,这个方法有个弊端,那就是除非一开始就设置,否者程序做到一半再修改字符集会很麻烦,得不偿失。


解决方案二:根据提示转化,将CString转化为char*:

CString testStr = _T("3.1415926");
double dbNum = atof((LPSTR)(LPCTSTR)testStr);

但是,这样转化后小数部分数据丢失。


解决方案三:使用_ttof()

CString testStr = _T("3.1415926");
double dbNum = _ttof(testStr);