zoukankan      html  css  js  c++  java
  • 【DEBUG】不能将参数 1 从“CString”转换为“const char *”


    1.  在vc6.0下用CString str;num = atoi(str);就可以顺利取到num;

    但是同样代码拿到vs2008就报错,error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”;


    于是把CString 强制转换为char*,num = atoi((LPSTR)(LPCTSTR)str);
    编译不报错,运行成功。但是后面发现,本来str="123",num应该是123,结果却只是1,试了其他的都是只取最前面一位。
    后面百度中无意发现,原来是,

    vc6.0默认是ansi编码,所以atoi可以直接用,结果也正确;但是

    VS2008默认的编码方式是Unicode,Unicode下不能用atoi,而要使用_wtoi 也可以直接使用_ttoi,它在 ANSI 编码系统中被编译成atoi(),而在 Unicode 编码系统中编译成_wtoi()。或者把vs改成ansi编码也行。


    num = _ttoi(str);    (_ttoi类似于_T,随着编码方式会改变)。



    2.  “atof”: 不能将参数 1 从“CString”转换为“const char *”


    问题描述:m_Data[number]=atof(strtemp);
    其中,m_Data为double型,number为long型,strtemp为CString型的。
    为什么会出现这样的错误?


    error C2664: “atof”: 不能将参数 1 从“CString”转换为“const char *”
     
    解决:用_ttof代替atof






  • 相关阅读:
    vue 跨域访问http
    vue 生命周期小结
    koa的教程
    spoj104 HIGH
    loj2026 「JLOI / SHOI2016」成绩比较
    loj2024「JLOI / SHOI2016」侦查守卫
    loj2016 「SCOI2016」美味
    loj2014 「SCOI2016」萌萌哒
    loj2013 「SCOI2016」幸运数字
    loj2012 「SCOI2016」背单词
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436663.html
Copyright © 2011-2022 走看看