double dbFirst=atof(szFirst.GetBuffer(0));
szFirst.ReleaseBuffer(0);szFirst是CString类型的。。1>e:\mfc_p\visual.cpp开发实战宝典\6.4\clc\clc\clcdlg.cpp(172) : error C2664: “atof”: 不能将参数 1 从“wchar_t *”转换为“const char *”编译器出现如上提示!我是按书上写的程序,在我自己写的程序编译无法通过,但在在书中光盘中,提供的代码,可以通过本人新手,麻烦各位给点指点。谢谢!

解决方案 »

  1.   

    你的编译器版本不是VC6.0
    光盘的代码默认是在VC6.0中编的,没有设置为UNICODE,所以你转成VS打开也不会有问题。当你自己在VS中NEW一个工程的时候,默认的是UNICODE编码,宽字节不能用atof。如果你一定要用atof,可以先将szFirst,用WideCharToMultiByte转成ANSI,再用atof。
    如果不想转,你可以用wtoi、wtof等
    还有一个办法就是要新建工程时,取消默认的UNICODE选项。
      

  2.   

    工程设置中,不要使用Unicode字符集使用多字节字符集
      

  3.   

    使用UNICODE版本的函数_wtol   _wtoi  就可以了
      

  4.   

    _wtof    这个是转换成double的
      

  5.   

    非常感谢!
    再请问一下szReslu.Format("%f",dbReslu);该怎么改呢
      

  6.   

    szReslu.Format(L"%f",dbReslu);
    或者
    szReslu.Format(_T("%f"),dbReslu);
    L表示显示指定UNICODE,
    _T()宏是通过检测_UNICODE宏添加L标记