遇到一个奇怪的问题——关于VS2013、VS2015中字符集(多字节字符集和Unicode字符集)的选择
喵哥最近在写一个控制程序和被控制程序,脑子进水般的同时用了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字符集)的选择相关推荐
- 编写一个函数,用来删除字符串中的空格字符:
#include<stdio.h> int main() {char str[] = { "Huai Bei 2014" }, * p = str,*q;while ( ...
- VS2013和VS2015中MVC 区域路由匹配顺序相反
创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改Rou ...
- 【已解决】解决Win7安装VS2013/VS2015结束时报错“无法建立到信任根颁发机构的证书链”的问题
问题描述 最近在Win7虚拟机上上安装VS,等待许久之后,提示安装完成.但是完成界面报错: "无法建立到信任根颁发机构的证书链". 而且错误还不少,如下图所示: 根据我的个人经验, ...
- MinGW 和 MSVC 下,使用 FILE 类型的一个奇怪的问题
今天遇到一个奇怪的问题. 开发环境: 1. Eclipse CDT,使用 MinGW 的 gcc 编译器和函数库 2. Visual Studio 2008 问题描述: 在 eclipse cdt 中 ...
- java线程未执行完成,java线程测试-一个奇怪的景况-执行未完成直接结束了
java线程测试-一个奇怪的状况-执行未完成直接结束了 import org.junit.Test; /** * 同步线程测试 * @author jview * */ public class te ...
- Delphi XE 使用 MySQL 数据库一个奇怪的问题
Delphi XE 使用 MySQL 数据库一个奇怪的问题 我用的是自带的 ADO 组件连接 MYSQL ,连接很简单,如下: 1.下载一个 MYSQL 驱动安装上 下载地址 2.连接串 Adoc.C ...
- dedecms在linux主机下的一个奇怪错误
扬帆blog原创文章,转载请保留原地址:http://www.wesoho.com/article/asp/2874.htm dedecms上传到linux空间后遇到一个问题,所有header转向失效 ...
- 汇编语言:实验8分析一个奇怪的程序
实验介绍 实验8 分析一个奇怪的程序 分析下面的程序,在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么是这种结果? 实验代码 ;实验8 分析一个奇怪的程序 ;分析下面的程序,在运行前思考: ...
- VS2013、VS2015中,新建项目没有看到解决方案的问题(已解决)
VS2013.VS2015中,新建项目没有看到解决方案的问题(已解决) 参考文章: (1)VS2013.VS2015中,新建项目没有看到解决方案的问题(已解决) (2)https://www.cnbl ...
- 一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直“#”的问题
一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直"#"的问题 参考文章: (1)一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直"#"的问题 ...
最新文章
- 【统计学习】多元统计分析
- linux每日命令(26):Linux文件属性详解
- 快用一用 lambda 表达式吧,让你的代码更简洁、更漂亮!
- C#switch语句简单测试
- access 根据id删除数据_小程序云开发之数据库自动备份丨云开发101
- matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
- Parasoft软件测试实践:什么是左移测试?
- Repository 仓储,你的归宿究竟在哪?(三)-SELECT 某某某。。。
- MAMP Pro for Mac(PHP/MySQL开发环境工具)
- 区块链 以太坊 验证区块
- WebApp 安全入门
- java日期字符串排序_对字符串格式的日期进行排序
- js实现批量打印工资条,后台采用java开发(项目总结篇)
- vp9 prob 详细分析
- 定积分求导例题_定积分典型例题
- 红米1A显示器于笔记本win10环境下,如何设置颜色范围使得显示器亮度恢复成250nit
- android 复制asset文件下文件到手机指定路径,手机根目录
- CSS中的:before和 :after
- ps 画中间透明的边框图形
- 深圳技术大学计算机专业分数线,深圳技术大学2020录取分数线(附2017-2020年分数线)...