"LPWSTR" 类型的实参与"const.char *"类型形参不兼容
- CString csPlus;
- CString csSummand;
- m_PlusNumber.GetWindowTextW(csPlus);
- m_Summand.GetWindowTextW(csSummand);
- int nPlus = atoi(csPlus.GetBuffer(0)); //将编辑框文本转换成整数
- // int nPlus = atoi(strcpy(csPlus.GetBuffer(10),"aa"));
- csPlus.ReleaseBuffer();
- int nSummand = atoi(csSummand.GetBuffer(0));
- csSummand.ReleaseBuffer();
- int nRet = nPlus + nSummand;
- char chRet[128] = {0}; //将结果装换成字符串
- itoa(nRet,chRet,10);
- 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修改为:
- int nPlus = _wtoi(csPlus.GetBuffer(0));
- int nSummand = _wtoi(csSummand.GetBuffer(0));
对13行的修改 修改为:
可添加声明
- CString csRet;
字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值
将chRet赋给csRet
- csRet = chRet;
最后一行修改为
- m_Result.SetWindowTextW(csRet);
对13行的修改更简化应该为寻找一种将int型转换成CString的方法。
在VC6中可以直接
- csRet.Format("%d",nRet);
但是在2010中不适用。
在VC2010中应该这样写
- csRet.Format(_T("%d"),nRet);
OK 修改完成 可以运行
"LPWSTR" 类型的实参与"const.char *"类型形参不兼容的更多相关文章
- CString 转化成 const char* 类型
写程序的时候经常会遇到无法将“CString”转换为“const char *”的错误,这里我找到了一个解决办法,与大家分享下: CString cs = _T("); ) * ; char ...
- vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体
原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char* ...
- Error:“const char*”类型的实参与“wchar_t”类型的形参不兼容
MainApp\RPolarView.cpp(1571): error C2664: “ATL::CStringT<BaseType,StringTraits>::ReverseFind” ...
- Qt QString 与 const char* 类型的转换
QString DATA; std::string str = DATA.toStdString(); const char* ch = str.c_str();
- Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。
在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origs ...
- VC++2017关于项目出现"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法
C++项目中经常会定义如下形式的字符串: char *texts[] = { "1. Open Account", "2. To Deposit Money", ...
- "const char *" 类型的值不能用于初始化 "char *" 类型的实体
用vs2019发现会出现这样的问题 最后发现只要设置一下就解决了,解决方案如下: 右击该项目,选择属性->c/c++->语言->将符合模式改为否就行了... 设置之后程序没有再报错, ...
- Vs2017编译器提示:不能将“const char *”类型的值分配到“char *”类型的实体
在项目属性中将语言符合模式改成否即可
- 在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?
今天在做 COS脚本解释器的时候,遇到了这个问题 先了解一下 LPCTCHAR 这个东东 LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么 ...
随机推荐
- ABAP动态生成经典应用之Dynamic SQL Excute 程序
[转自http://blog.csdn.net/mysingle/article/details/678598]开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Ta ...
- QT修改应用程序图标
要准备一个ico的图标,必须是ico格式,切记!! 可以用png或者其他的在线转换:http://www.easyicon.net/covert/ 用记事本 新建文件icon.rc,内容为: IDI_ ...
- 【thrift】初识thrift
Reference:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/ http://jacksongblack.blog.51c ...
- yii 资料
https://github.com/forecho/awesome-yii2 会随时更新 链接:http://pan.baidu.com/s/1mgCKtUK 密码:t6t1 与<YII框架& ...
- Oracle数据库体系结构(7) 表空间管理1
表空间是Oracle数据库最大的逻辑存储结构,有一系列段构成.Oracle数据库对象存储结构的管理主要是通过表空间的管理实现的. 1.表空间的分类 表空间根据存储类型不同分为系统表空间和非系统表空间 ...
- 【leetcode刷题笔记】Valid Number
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- 在Delphi中使用ShellExecute(handle, 'open', PChar(fname),nil, nil, SW_HIDE)函数应注意的问题
在Delphi中使用ShellExecute(handle, 'open', PChar(fname),nil, nil, SW_HIDE)函数应注意的问题: 一.对一般vcl程序及isapi dll ...
- java深入探究04
1.Http协议 tcp/ip关注的是客户端服务器之间数据是否传输成功 http协议:是在tcp/ip协议之间封装的一层协议关注的是传输格式是否规范 注意:系统自带的telent工具(远程访问工具)可 ...
- M1905
11.09 11:00------102万 11.09 14:00---103万 11.12 16:00------103万 11.19 16:00---94万 11.20 ...
- Spark- 计算每个学科最受欢迎的老师
日志类型 测试数据 http://bigdata.myit.com/zhangsan http://bigdata.myit.com/zhangsan http://bigdata.myit.com/ ...