1. CString csPlus;
  2. CString csSummand;
  3. m_PlusNumber.GetWindowTextW(csPlus);
  4. m_Summand.GetWindowTextW(csSummand);
  5. int nPlus = atoi(csPlus.GetBuffer(0)); //将编辑框文本转换成整数
  6. // int nPlus = atoi(strcpy(csPlus.GetBuffer(10),"aa"));
  7. csPlus.ReleaseBuffer();
  8. int nSummand = atoi(csSummand.GetBuffer(0));
  9. csSummand.ReleaseBuffer();
  10. int nRet = nPlus + nSummand;
  11. char chRet[128] = {0}; //将结果装换成字符串
  12. itoa(nRet,chRet,10);
  13. m_Result.SetWindowTextW(chRet);

在 5  8   13 行处会报错

原因分析:

这些代码在VC6 下面是可以的  在VC2010下不能通过

VC6默认使用字符ANSII编码方式

VC2010默认使用UNICODE编码方式

为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数 量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。

LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。

CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。

在ANSII和UNICODE两种情况下,TCHAR的字符位数不一样,所以会有这样的报错。

最简单的解决方法是工程右键属性 修改编码方式从unicode改为多字节字符集。

在VC2010中 将CString转换成char  应该使用 _wtoi

5 ,8修改为:

  1. int nPlus = _wtoi(csPlus.GetBuffer(0));
  2. int nSummand = _wtoi(csSummand.GetBuffer(0));

对13行的修改 修改为:

可添加声明

  1. CString csRet;

字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值

将chRet赋给csRet

  1. csRet = chRet;

最后一行修改为

  1. m_Result.SetWindowTextW(csRet);

对13行的修改更简化应该为寻找一种将int型转换成CString的方法。

在VC6中可以直接

  1. csRet.Format("%d",nRet);

但是在2010中不适用。

在VC2010中应该这样写

  1. csRet.Format(_T("%d"),nRet);

OK  修改完成 可以运行

"LPWSTR" 类型的实参与"const.char *"类型形参不兼容的更多相关文章

  1. CString 转化成 const char* 类型

    写程序的时候经常会遇到无法将“CString”转换为“const char *”的错误,这里我找到了一个解决办法,与大家分享下: CString cs = _T("); ) * ; char ...

  2. vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体

    原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char* ...

  3. Error:“const char*”类型的实参与“wchar_t”类型的形参不兼容

    MainApp\RPolarView.cpp(1571): error C2664: “ATL::CStringT<BaseType,StringTraits>::ReverseFind” ...

  4. Qt QString 与 const char* 类型的转换

    QString DATA; std::string str = DATA.toStdString(); const char* ch = str.c_str();

  5. Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。

    在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origs ...

  6. VC++2017关于项目出现"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法

    C++项目中经常会定义如下形式的字符串: char *texts[] = { "1. Open Account", "2. To Deposit Money", ...

  7. "const char *" 类型的值不能用于初始化 "char *" 类型的实体

    用vs2019发现会出现这样的问题 最后发现只要设置一下就解决了,解决方案如下: 右击该项目,选择属性->c/c++->语言->将符合模式改为否就行了... 设置之后程序没有再报错, ...

  8. Vs2017编译器提示:不能将“const char *”类型的值分配到“char *”类型的实体

    在项目属性中将语言符合模式改成否即可

  9. 在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?

    今天在做 COS脚本解释器的时候,遇到了这个问题 先了解一下 LPCTCHAR 这个东东 LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么 ...

随机推荐

  1. The given 'driver' ] is unknown, Doctrine currently supports only the follo wing drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo

    [Doctrine\DBAL\DBALException]                                                  The given 'driver' ] ...

  2. GitHub提示 Error: Key already in use解决办法

    GitHub提示 Error: Key already in use解决办法GitHub提示 Error: Key already in use解决办法2014年09月05日 ⁄ 综合 ⁄ 共 290 ...

  3. require.js vs browserify

    require.js vs browserify require.js是模块加载器:browserify是预编译工具 require.js遵循的是AMD规范:browserify遵循的是CommonJ ...

  4. 批处理设置IP地址

    echo offecho 修改[本地连接]IP......netsh interface IP set address "本地连接" static 138.8.8.111 255. ...

  5. ubuntu14.04允许root远程链接、修改主机名

    1.设置root密码 sudo passwd root 2.修改主机名 第一步:ubuntu主机名位于/etc/hostname里,将其修改为自己需要的名称. 第二步:修改/etc/hosts文件,将 ...

  6. linux 创建账户

    linux下创建用户 linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,不论什么一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. ...

  7. 每天一个Linux命令(26)chown命令

          chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组.     (1)用法:     用法:  chown [选项 ...

  8. 常用grads函数

    GrADS的函数分两类, 一类是对格点/站点数据执行运算的,这一类我们姑且称之为分析函数; 另一类是脚本编程(gs)时使用的, 这后一类我们姑且称之为脚本函数. 第一类分析函数又分为格点分析和站点分析 ...

  9. KbmMemTable的简单应用(增删改查示例)

    //kbmMemTable unit Unit1;   interface   uses   Windows, Messages, SysUtils, Variants, Classes, Graph ...

  10. (转)JSP九大内置对象

    原文出处:http://www.importnew.com/19128.html 虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对 ...