char 类型与lpcwstr_在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?...
今天在做 COS脚本解释器的时候,遇到了这个问题
先了解一下 LPCTCHAR 这个东东
LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。
那么什么叫UNICODE(统一码)???
背景知识:计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个字符。后来他们突然发现,如果需要按照表格方式打印这些字符的时候,缺少了“制表符”。于是又扩展了ASCII的定义,使用一个字节的全部8位(bit)来表示字符了,这就叫扩展ASCII码。范围是0x00 - 0xFF 共256个字符。中国人利用连续2个扩展ASCII码的扩展区域(0xA0以后)来表示一个汉字,该方法的标准叫GB-2312。后来,日文、韩文、阿拉伯文、台湾繁体(BIG-5)......都使用类似的方法扩展了本地字符集的定义,现在统一称为 MBCS 字符集(多字节字符集)。这个方法是有缺陷的,因为各个国家地区定义的字符集有交集,因此使用GB-2312的软件,就不能在BIG-5的环境下运行(显示乱码),反之亦然。
为了把全世界人民所有的所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集。UNICODE 使用2个字节表示一个字符(unsigned shor int、WCHAR、_wchar_t、OLECHAR)。这下终于好啦,全世界任何一个地区的软件,可以不用修改地就能在另一个地区运行了。虽然我用 IE 浏览日本网站,显示出我不认识的日文文字,但至少不会是乱码了。UNICODE 的范围是 0x0000 - 0xFFFF 共6万多个字符,其中光汉字就占用了4万多个
1、LPCTSTR是什么?
LPCTSTR就是一个32-bit指针指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义
LPCTSTR是一个windows API数据类型。根据windows API数据类型的命名规律:
1)L——long 指针,是为了兼容Window3.1等16位扣件系统遗留下来的,
在Win32中以及其他的32的扣件系统中,long 指针和near 指针及far 修饰符都是为了兼容的作用,而没有实际意义。
2)P表示该变量是一个指针,C表示是常量(const),STR表示的是字符串。因此LPCSTR是一个const char*类型。
这是一个windows(ANSI)字符串常量,它是多字节编码的。
3)LPCWSTR:而W表示的是宽字符,因此LPCWSTR表示的也是字符串常量,不过是Unicode编码的。
2、问题的解决
1、用THCAR代替char
2、字符串加_T(""),如_T("你好")
3、用_tcscpy等代替strcpy等
前俩种方法我都用了
其实我还是不太明白。为什么会出现这个问题呢??????
char 类型与lpcwstr_在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?...相关推荐
- IntelliSense: const char * 类型的实参与 LPCWSTR 类型的形参不兼容
1. 在Windows程序设计中遇到错误: (1)IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼 ...
- “const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容,VScode
不同于VS系列,VScode我找到没有快速的解决办法,只能一点一点来 问题: wnd.lpszClassName = "WindowClass"; 不能将 "const ...
- VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“
VSCode C/C++提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容" 问题产生原因 VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式 ...
- java char数组转string数组_Java中char数组(字符数组)与字符串String类型的转换方法...
本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordFie ...
- java中char是几个字节_Java中char占用几个字节
在讨论这个问题之前,我们需要先区分unicode和UTF. unicode :统一的字符编号,仅仅提供字符与编号间映射.符号数量在不断增加,已超百万.详细:[https://zh.wikipedia. ...
- 在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?
今天在做 COS脚本解释器的时候,遇到了这个问题 先了解一下 LPCTCHAR 这个东东 LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么 ...
- char 类型与lpcwstr_「lpctstr」char* 与 LPCTSTR 类型的互相转换 - seo实验室
lpctstr 1.char* 转换成 LPCTSTR char ch[1024] = "wo shi ni baba"; int num = MultiByteToWideCha ...
- C++ char*类型的实参与 LPCWSTR类型的形参不兼容
都是Unicode字符集编码惹的祸,旧的教材上往往都使用多字符段编码 1.使用TCHAR 代替char 2.使用swprintf_s代替sprintf_s 3.使用TEXT函数或者是_L修饰const ...
- c# char unsigned_C 中 char、signed char 和 unsigned char 的区别
C 中 char.signed char 和 unsigned char 的区别 来源:http://bbs.chinaunix.net/thread-889260-1-1.html 参考:https ...
最新文章
- 联想架构调整:智能手机业务很重要
- 论文笔记-Augmented Lagrange Multiplier Method for Recovery of Low-Rank Matrices
- kotlin集合操作符——顺序操作符
- @resource和@Autowired区别
- Angular Lazy Load 的一个局限性以及解决办法
- 手动升级ubuntu 18.04内核从4.15.0-45-generic到4.15.0-52-generic
- 关于mysql ERROR 1045 (28000)错误的解决办法
- Mysql数据库索引原理及算法原理
- 编译OpenJDK8-u332:/bin/sh: 1: [: -a: unexpected operator/line 0: [: too many arguments
- 卡方分箱(chi-square)1
- 在Linux安装QQ,只需几步
- Steam提示steam需要在线更新 + steam needs to be online to update最全解决方法
- SQL Server 使用触发器(trigger)发送电子邮件步骤详解
- 硬盘分区形式之MBR、GPT
- 酷比魔方 iwork10旗舰版恢复出厂设置遇到的问题
- qt android刘海屏状态栏,安卓手机刘海屏算抄袭苹果iPhone X吗?真相了
- 20分钟搞定平衡二叉树(AVL树)【超详细】
- 港澳出入境通行证办事流程
- java mysql 分区表_mysql 分区有实用价值吗?
- 3D建模教学 | 卡通石头高模制作技巧
热门文章
- Windows漏洞利用技术概述
- 生成指定位数UUID
- 【simulink simscape报错】Rigidly connected port error with Simscape Multibody Contact Forces Library
- Unity多人游戏和网络功能(一) 概述和基本概念
- windows 类似iconv_iconworkshop 的三个同类型替换软件
- 太空 5G 在启动板上
- 光标变成下横线,变回竖线方法
- 使用IDEA 刷新项目 清除缓存
- 30岁测试工程师对取消大小周的看法,“我宁愿在996里哭,也不愿在955里笑”
- 快速搭建基于beanstalk的php消息队列服务