喵哥最近在写一个控制程序和被控制程序,脑子进水般的同时用了VS2013和VS2015,一个程序对应一个,最开始,两者都采用Unicode字符集,但是控制程序发出的指令不能被被控制程序接收,绞尽脑汁的思考,才想到可能是由于字符集的原因——因为在被控制程序接收指令的地方有这样一段代码:

/*****************接收ShellExecute的消息************************/CString str;for (int i = 1; i < __argc; i++) { str += __argv[i];} /***************************设置INDEX以选择需要的相机**********************/if (str == "openCamera1")       CINDEX = 0;else if (str == "openCamera2")   CINDEX = 1;else if (str == "openCamera3")  CINDEX = 2;else if (str == "openCamera4")  CINDEX = 3;else if (str == "openCamera5")  CINDEX = 4;else if (str == "openCamera6")  CINDEX = 5;

可能是接收时,在这里出了问题(之前采用Unicode字符集,if语句里的字符串前有一个L,如L"openCamera1"),于是把字符集改成了多字节字符集,问题就得到解决了。

PS:对于字符的定义,Unicode下用wchar_t(#define wchar_t  WHAR),多字符编码是char。在windows系统下,每套API都提供两套接口:1、xxA(.)为传统的多字符集;2、xxW(..)为Unicode字符集。根据VS项目设置的字符集,API可以自动调用相应的API。

TCHAR类型:自适应Unicode项目与多字符集项目
a)当VS项目设置为多字符集时,TCHAR被系统定义为char类型
b)当VS项目设置为Unicode时,TCHAR被系统定义为wchar_t类型
c)当VS项目设置为Unicode时,_TEXT(x)被系统定义为L(x)Unicode类型常量。
d)当VS项目设置为多字符集时,_TEXT(x)被系统定义为x多字符集类型常量。
e)使用_T或_TEXT时必须包含<tchar.h>,使用它来修饰字符串代码具有可移植性。

如:TCHAR *t = _T("abc");

char whar_t TCHAR之间相互转换可以采用T2A,W2A,A2W,A2T,使用前需要包含头文件:AtlBase.h,以及声明标识符   USES_CONVERSION;

另外,_bstr_t类((comutil.h))相对比较方便,可以随时存入和取出两种字符串,_bstr_t一般在MFC工程下使用。

例如:    _bstr_t bstr = "abc";
    bstr += L"中共";

char* p = bstr;
    wchar_t *p2 = bstr;

遇到一个奇怪的问题——关于VS2013、VS2015中字符集(多字节字符集和Unicode字符集)的选择相关推荐

  1. 编写一个函数,用来删除字符串中的空格字符:

    #include<stdio.h> int main() {char str[] = { "Huai Bei 2014" }, * p = str,*q;while ( ...

  2. VS2013和VS2015中MVC 区域路由匹配顺序相反

    创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改Rou ...

  3. 【已解决】解决Win7安装VS2013/VS2015结束时报错“无法建立到信任根颁发机构的证书链”的问题

    问题描述 最近在Win7虚拟机上上安装VS,等待许久之后,提示安装完成.但是完成界面报错: "无法建立到信任根颁发机构的证书链". 而且错误还不少,如下图所示: 根据我的个人经验, ...

  4. MinGW 和 MSVC 下,使用 FILE 类型的一个奇怪的问题

    今天遇到一个奇怪的问题. 开发环境: 1. Eclipse CDT,使用 MinGW 的 gcc 编译器和函数库 2. Visual Studio 2008 问题描述: 在 eclipse cdt 中 ...

  5. java线程未执行完成,java线程测试-一个奇怪的景况-执行未完成直接结束了

    java线程测试-一个奇怪的状况-执行未完成直接结束了 import org.junit.Test; /** * 同步线程测试 * @author jview * */ public class te ...

  6. Delphi XE 使用 MySQL 数据库一个奇怪的问题

    Delphi XE 使用 MySQL 数据库一个奇怪的问题 我用的是自带的 ADO 组件连接 MYSQL ,连接很简单,如下: 1.下载一个 MYSQL 驱动安装上 下载地址 2.连接串 Adoc.C ...

  7. dedecms在linux主机下的一个奇怪错误

    扬帆blog原创文章,转载请保留原地址:http://www.wesoho.com/article/asp/2874.htm dedecms上传到linux空间后遇到一个问题,所有header转向失效 ...

  8. 汇编语言:实验8分析一个奇怪的程序

    实验介绍 实验8 分析一个奇怪的程序 分析下面的程序,在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么是这种结果? 实验代码 ;实验8 分析一个奇怪的程序 ;分析下面的程序,在运行前思考: ...

  9. VS2013、VS2015中,新建项目没有看到解决方案的问题(已解决)

    VS2013.VS2015中,新建项目没有看到解决方案的问题(已解决) 参考文章: (1)VS2013.VS2015中,新建项目没有看到解决方案的问题(已解决) (2)https://www.cnbl ...

  10. 一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直“#”的问题

    一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直"#"的问题 参考文章: (1)一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直"#"的问题 ...

最新文章

  1. 【统计学习】多元统计分析
  2. linux每日命令(26):Linux文件属性详解
  3. 快用一用 lambda 表达式吧,让你的代码更简洁、更漂亮!
  4. C#switch语句简单测试
  5. access 根据id删除数据_小程序云开发之数据库自动备份丨云开发101
  6. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
  7. Parasoft软件测试实践:什么是左移测试?
  8. Repository 仓储,你的归宿究竟在哪?(三)-SELECT 某某某。。。
  9. MAMP Pro for Mac(PHP/MySQL开发环境工具)
  10. 区块链 以太坊 验证区块
  11. WebApp 安全入门
  12. java日期字符串排序_对字符串格式的日期进行排序
  13. js实现批量打印工资条,后台采用java开发(项目总结篇)
  14. vp9 prob 详细分析
  15. 定积分求导例题_定积分典型例题
  16. 红米1A显示器于笔记本win10环境下,如何设置颜色范围使得显示器亮度恢复成250nit
  17. android 复制asset文件下文件到手机指定路径,手机根目录
  18. CSS中的:before和 :after
  19. ps 画中间透明的边框图形
  20. 深圳技术大学计算机专业分数线,深圳技术大学2020录取分数线(附2017-2020年分数线)...

热门文章

  1. 容量管理体系建设实践
  2. 抗滑桩初始弹性系数计算_理正岩土常见问题解答(全)
  3. 【架构】分布式架构介绍及实现(简略)
  4. Linux下NTP服务器配置
  5. Unity2020打包ARCore项目apk
  6. RK987A键盘说明书(自用)
  7. MDK5与Keil C51安装、合并、pack支持包的安装、STC芯片选型头文件的添加、界面美化(保姆级教程)
  8. qcap 教程_高通平台抓取ramdump及使用qcap解析,ramdumpqcap
  9. 2022-2028年中国智慧教育行业发展策略分析及投资前景研究报告
  10. SaaSpace:2022年4款最好的免费3D打印软件