今天在做 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类型的形参类型不兼容怎么解决?...相关推荐

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

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

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

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

  3. VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“

    VSCode C/C++提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容" 问题产生原因 VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式 ...

  4. java char数组转string数组_Java中char数组(字符数组)与字符串String类型的转换方法...

    本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordFie ...

  5. java中char是几个字节_Java中char占用几个字节

    在讨论这个问题之前,我们需要先区分unicode和UTF. unicode :统一的字符编号,仅仅提供字符与编号间映射.符号数量在不断增加,已超百万.详细:[https://zh.wikipedia. ...

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

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

  7. char 类型与lpcwstr_「lpctstr」char* 与 LPCTSTR 类型的互相转换 - seo实验室

    lpctstr 1.char* 转换成 LPCTSTR char ch[1024] = "wo shi ni baba"; int num = MultiByteToWideCha ...

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

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

  9. 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 ...

最新文章

  1. 联想架构调整:智能手机业务很重要
  2. 论文笔记-Augmented Lagrange Multiplier Method for Recovery of Low-Rank Matrices
  3. kotlin集合操作符——顺序操作符
  4. @resource和@Autowired区别
  5. Angular Lazy Load 的一个局限性以及解决办法
  6. 手动升级ubuntu 18.04内核从4.15.0-45-generic到4.15.0-52-generic
  7. 关于mysql ERROR 1045 (28000)错误的解决办法
  8. Mysql数据库索引原理及算法原理
  9. 编译OpenJDK8-u332:/bin/sh: 1: [: -a: unexpected operator/line 0: [: too many arguments
  10. 卡方分箱(chi-square)1
  11. 在Linux安装QQ,只需几步
  12. Steam提示steam需要在线更新 + steam needs to be online to update最全解决方法
  13. SQL Server 使用触发器(trigger)发送电子邮件步骤详解
  14. 硬盘分区形式之MBR、GPT
  15. 酷比魔方 iwork10旗舰版恢复出厂设置遇到的问题
  16. qt android刘海屏状态栏,安卓手机刘海屏算抄袭苹果iPhone X吗?真相了
  17. 20分钟搞定平衡二叉树(AVL树)【超详细】
  18. 港澳出入境通行证办事流程
  19. java mysql 分区表_mysql 分区有实用价值吗?
  20. 3D建模教学 | 卡通石头高模制作技巧

热门文章

  1. Windows漏洞利用技术概述
  2. 生成指定位数UUID
  3. 【simulink simscape报错】Rigidly connected port error with Simscape Multibody Contact Forces Library
  4. Unity多人游戏和网络功能(一) 概述和基本概念
  5. windows 类似iconv_iconworkshop 的三个同类型替换软件
  6. 太空 5G 在启动板上
  7. 光标变成下横线,变回竖线方法
  8. 使用IDEA 刷新项目 清除缓存
  9. 30岁测试工程师对取消大小周的看法,“我宁愿在996里哭,也不愿在955里笑”
  10. 快速搭建基于beanstalk的php消息队列服务