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  修改完成 可以运行

转载于:https://www.cnblogs.com/duyy/p/3600454.html

LPWSTR 类型的实参与const.char *类型形参不兼容相关推荐

  1. char类型的实参与const char类型的形参不兼容_C++干货系列——顶层const和底层const...

    顶层 const 和底层 const 学C++的小伙伴是不是被const机制搞得晕头转向,永远都记不住哪个是指针不能变哪个是指针指向的对象不能变?纯靠记忆肯定不行,理解透彻才能一劳永逸.本文详细介绍了 ...

  2. “const char *“ 类型的实参与 “char *“ 类型的形参不兼容错误的解决方法

    "const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法 参考文章: (1)"const char *" ...

  3. 关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法

    关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法 问题来源 错误原因 解决方案 问题来源 在学习写C++代码时候,去练习课本上课后习题时候的问题, ...

  4. IntelliSense: const char * 类型的实参与 LPCWSTR 类型的形参不兼容

    1.  在Windows程序设计中遇到错误: (1)IntelliSense:  "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼 ...

  5. const char*类型的实参与LPCTSTR类型的形参不兼容 MFC

    "const char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容 http://blog.sina.com.cn/s/blog_6ccd0a11 ...

  6. “const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容,VScode

    不同于VS系列,VScode我找到没有快速的解决办法,只能一点一点来 问题: wnd.lpszClassName = "WindowClass"; 不能将 "const ...

  7. “const wchar_t *“ 类型的实参与 “LPCSTR“ 类型的形参不兼容的原因和解决方法

    (133条消息) "const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容的原因和解决方法_cmiao-me的博客-CSDN博客

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

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

  9. C++ char*类型的实参与 LPCWSTR类型的形参不兼容

    都是Unicode字符集编码惹的祸,旧的教材上往往都使用多字符段编码 1.使用TCHAR 代替char 2.使用swprintf_s代替sprintf_s 3.使用TEXT函数或者是_L修饰const ...

最新文章

  1. [转载]Lua和C++交互详细总结
  2. 存在于实数域的微观粒子3-∂f(x)/ ∂x=f(x).f(-x)
  3. 《Effective STL》学习笔记(第四部分)
  4. HDU 1811 Rank of Tetris(并查集按秩合并+拓扑排序)
  5. 取整、取余、取模的区别
  6. JQuery判断数组中是否包含某个元素$.inArray(js, arr);
  7. silverlight textblock 自动换行
  8. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
  9. win32_bios 的对象编辑器无法保存对象_怎样创建Femap对象
  10. 4.5.1 条件语句
  11. 真机调试时部分日志丢失(魅族)
  12. java pdf文件如何转换tiff文件_C#实现TIF图像转PDF文件的方法
  13. 大数据高冷?10个有趣的大数据经典案例
  14. 永恒之蓝——windows server 2003 漏洞
  15. 简单好用的Linux服务器管理面板——宝塔面板
  16. 如何利用新闻传播进行产品网络推广?
  17. The Lottery Ticket Hypothesis
  18. Springboot - 处理LocalDateTime的入参和出参格式
  19. springboot学习:bean生命周期
  20. Python计算机视觉编程第三章——图像到图像的映射

热门文章

  1. matlab reshape矩阵维度变换
  2. OpenCV copyMakeBorder()来拓展边界
  3. 如果你是IT技术人员,请思考这15个问题
  4. java 8 update 11_从Java 8升级到Java 11应该注意的问题
  5. 角反射器的功能及应用
  6. fifa15服务器位置,《FIFA 15》全系统教程图文攻略
  7. t oracle删除吗,Oracle 11g 手工建库与删库
  8. 产品认知:如何选择产品经理的产品方向?
  9. 疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统
  10. js数组再倒数第二个添加元素_归纳JS中数组的使用(一)元素新增和删除