今天在做 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等

前俩种方法我都用了

其实我还是不太明白。为什么会出现这个问题呢??????

在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?的更多相关文章

  1. Error:不能将"char*"类型的值分配到"LPSTR"类型的实体 也许 "char*"类型的实参与"LPCWSTR"类型的形参不兼容

    http://www.myexception.cn/ruby-rails/1876106.html 选择“XXX项目”->“属性”->“配置属性”->“常规”选项中,把“使用 Uni ...

  2. 类型的实参与“LPTHREAD_START_ROUTINE”类型的形参不兼容

    在使用利用CreateThread创建线程时 struct A { DWORD WINAPI MyThreadFunction(LPVOID) {} void Run() { HANDLE hThre ...

  3. "LPWSTR" 类型的实参与"const.char *"类型形参不兼容

    CString csPlus; CString csSummand; m_PlusNumber.GetWindowTextW(csPlus); m_Summand.GetWindowTextW(csS ...

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

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

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

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

  6. 【VS2013编译DirectX Tutorials时遇到的错误】"const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/3696367.html 通过查看LPCSTR的定义: typedef _Null_te ...

  7. C#和C++中char类型的区别

    对于char,这个字符类型.我们一般都认为就是一个字节.今天在仔细比较发现,C#的char和C++的char是有区别的. 1.首先来看C#中char占多大空间 using System;using S ...

  8. 数据库中char与varchar类型的区别

    在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下选择塔 ...

  9. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

随机推荐

  1. linux 、 jmeter部署安装

    1.安装&配置 可在Linux服务器上利用服务器强大的性能,执行JMeter进行性能测试. 当然,可在Windows机器上先编好测试计划(注意版本匹配,否则可能产生莫名错误),然后下载到Lin ...

  2. 由于log太多导致ubuntu硬盘空间满了,进入不了系统解决办法

    具体现象是在图形界面输入用户名和密码之后,再次提示需要输入用户名和密码. 步骤一:按快捷键进入命令行界面.ctrl+alt+f1. 步骤二:清空文件 clear log cd /var/log sud ...

  3. php-设置关键词高亮的字符串处理函数

    /** * 设置关键词高亮的字符串处理函数 * @param [string] $str [要高亮的字符串] * @param array $word_arr [关键词] */function set ...

  4. Permutation test: p, CI, CI of P 置换检验相关统计量的计算

    For research purpose, I've read a lot materials on permutation test issue. Here is a summary. Should ...

  5. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色

    我们公司有1万多个网点,每个网点都可以看成是一个公司,公司对不同的网点有不同的策略,商业逻辑,每个网点的人员也都是在不断变化,全国有接近10万从业人员,当我们设计好业务逻辑程序后,不可能因为这些人员的 ...

  6. c#获取下载路径

    Request.ApplicationPath  返回/或者iis下目录.如果个人网站是在iis网站下面新建的目录aaa,返回如:/aaa Request.Url.Authority  返回域名和端口 ...

  7. Linux解压命令大全

    引用网址: http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:t ...

  8. JS组件系列——封装自己的JS组件,你也可以

    前言:之前分享了那么多bootstrap组件的使用经验,这篇博主打算研究下JS组件的扩展和封装,我们来感受下JQuery为我们提供$.Extend的神奇,看看我们怎么自定义自己的组件,比如我们想扩展一 ...

  9. Angular 2 - 5 分钟快速入门

    原文地址: https://angular.io/docs/ts/latest/quickstart.html 让我们从 0 开始创建一个简单的 Angular 2 应用. 下载任何版本的 angul ...

  10. MySQL安装步骤

    MySQL安装步骤 1. 下载MySQL Community Server 5.6.21,注意选择系统类型(32位/64位) 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下. ...