1、VS2010写个小程序,涉及到浮点数的计算,但是在将字符串(CString)转换成double时遇到了问题。
2、首先,我是这样做的:
CString testStr = _T("3.1415926");
double dbNum = atof(testStr);
报错如下:
“atof”: 不能将参数 1 从“CString”转换为“const char *”
没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
解决方案一:修改项目的字符集
将其从Unicode改为多字节字符集:
但是,这个方法有个弊端,那就是除非一开始就设置,否者程序做到一半再修改字符集会很麻烦,得不偿失。
解决方案二:根据提示转化,将CString转化为char*:
CString testStr = _T("3.1415926");
double dbNum = atof((LPSTR)(LPCTSTR)testStr);
但是,这样转化后小数部分数据丢失。
解决方案三:使用_ttof()
CString testStr = _T("3.1415926");
double dbNum = _ttof(testStr);