float tempFloat = 0.0;
tempFloat = atof(str);,
但是出现这样的错误
error C2664: 'atof' :
cannot convert parameter 1
from 'CString'
to 'const
char *'
原因:
工程是UNICODE, unicode下LPCTSTR可不是const char *
建议 :
CString str;
float fi;
fi = _tstof(str);
这样无论是不是unicode下,就都可以了
解决方案:
double atof(
const char *str
);
double _wtof(
const wchar_t *str
);
atof是非unicode版本的,所以接受参数为const
char *。
_wtof才是unicode下的,所以接受宽字符为参数。
为了统一,可以用_tstof或者_ttof。
非Unicode下,直接用GetBuffer(0)得到的就是单字节字符指针。
Unicode下,将GetBuffer(0)得到的宽字符指针用W2A宏转成单字节字符指针。
本文详细解释了在C++中使用非Unicode版本的`atof`函数进行字符串到浮点数转换时遇到错误的原因,并提供了解决方案。主要关注于Unicode环境下,从CString类型转换到浮点数时出现的类型不匹配问题,通过使用 `_tstof` 函数解决了此问题。
1024

被折叠的 条评论
为什么被折叠?



