看流星社区

 找回密码
 注册账号
查看: 2093|回复: 0

vc下cstring转换为float

[复制链接]

该用户从未签到

发表于 2015-5-5 15:42:03 | 显示全部楼层 |阅读模式
CString   str   =   CString("Almost   mad!");   
  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宏转成单字节字符指针。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-25 15:38

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表