经理要求以后的项目都使用unicode,整理以下看起来让人懵逼的基本类型... 其实在mfc中最容易让人发狂的就是关于字符的操作了. 两种常见基本C++char:(当然C++11新增char_16t.char32_t,参见C++primer plus) char:1个字节 wchar_t:2个字节 微软常见指针: LPSTR:     char* 指向可修改的变量字符串首地址 每个字符1个字节 LPCSTR:  const char*  指向不可修改的常量字符串首地址 每个字符1个字节 LPTS…
转自:http://blog.csdn.net/neverup_/article/details/5664733 今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失.原来CString类对象GetBuffer(),后以后还是unicode编码,所以必须将宽字符转换成char类型那就必须用到一个函数 网上查了下解决方法如下: 在Visual C++.NET2005中,默认的字符集形式是Unicode,…
今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失.原来CString类对象GetBuffer(),后以后还是unicode编码,所以必须将宽字符转换成char类型那就必须用到一个函数 网上查了下解决方法如下: 在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set…
原文转自 http://blog.csdn.net/u014303844/article/details/51397556 CString和string在unicode与非unicode下的相互转换 最近想写一个手机控制电脑的玩具,涉及到了socket通信,数据采用json通用格式,首先是jsoncpp的编译问题太烦了,然后还有更烦的,java中的String多容易的玩意儿,然后到了c/c++/mfc中超级烦,搜索了很久的攻略,用了大把的时间,最后写了个这玩意儿出来,或许可以帮助到一些需要此的道…
在开发Windows服务程序时,我们一般需要添加安装程序,即:serviceInstaller,里面有几个关于名称属性,你都搞明白了吗? 1.Description:表示服务说明(描述服务是干什么的): 2.DisplayName:表示友好名称,可以理解为服务名的别名: 3.ServiceName:表示服务名,此为真正的服务名,与DisplayName是有区别的哦,是系统识别的依据: 这三个属性在WIN7及更高版本操作系统中,同属性但表示却不同: 本地服务列表中:(即:services.msc)…
把最近用到的各种unicode下类型转换总结了一下: 1.string转CString string a=”abc”; CString str=CString(a.c_str()); 或str.format("%s", a.c_str()) 2.int转CString Int a; CString Cstr; Cstr.Format(_T("%d"),a); 3.char 转 CString CString.format("%s", char*)…
把最近用到的各种unicode下类型转换总结了一下,今后遇到其他的再补充: 1.string转CString string a=”abc”; CString str=CString(a.c_str()); 或str.format("%s", a.c_str()) 2.int转CString Int a; CString Cstr; Cstr.Format(_T("%d"),a); 3.char 转 CString CString.format("%s&qu…
#define CHECK(condition) cout<<check failed:<<#condition<<endl; 上面这句宏,当你 CHECK(myfunc()); 时,假设myfunc返回false,会输出:check failed:myfunc() 在宏中,#condition 是把参数转换为字符串,这在打印log时,可以很方便的打印出函数名称等等 这个大家可能都知道了,太小儿科了,但是,当你在unicode下用的时候,很可能会出现乱码 解决的办法是…
不同标准下的C语言常量范围的默认类型的检测 一.C90与C99标准下的不同常量范围的默认类型     C90标准下对不同常量范围默认类型的检测实现及运行结果: C99标准下对不同范围默认类型的检测实现及运行结果:     结论 在C90的标准下: 2147483648被计算机认为带符号数,而2147483647则作为无符号数与之进行运算. 根据计算机中C语言的规则,如果去运算中既有无符号的数又有有符号的整数,将两个数据均当作无符号数处理. 2147483648无符号表示为100...0(31个0…
Unicode 和多字节字符集 (MBCS) 支持 Visual Studio .NET 2003   有些国际市场以大字符集来使用日文和中文等语言.为了支持这些市场的编程,Microsoft 基础类库 (MFC) 支持以两种方式处理大字符集: Unicode 多字节字符集 (MBCS) unicode和多字节字符集是两种不同的编码方式,不同的编码方式下,所对应的一些函数是不兼容的. 读到多字节菜单字符串之后,用MultiByteToWideChar()转为unicode字符串 或者 使用API…