vc下cstring转换为float【zt】
lostbar吧
全部回复
仅看楼主
level 7
阮Tea 楼主
2009年09月19日 08点09分 1
level 7
阮Tea 楼主
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宏转成单字节字符指针。
2009年09月19日 08点09分 2
level 7
阮Tea 楼主
vc下cstring转换为float 
转自: 
http://blog.163.com/xiaoyueweiguang/blog/static/11726755620096895722934/ 
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宏转成单字节字符指针。
2009年09月19日 08点09分 3
level 1
请问 _ttof包含在哪个头文件
2012年12月12日 13点12分 4
好久了。。不记得了 百度了一下 是 tchar.h或者wchar.h 么?
2012年12月17日 06点12分
回复 阮Tea :哦 我知道了,我的SDK太老版本了,tchar.h里面没有
2012年12月24日 14点12分
1