东芝中国的C++笔试
1. 将程序改成Unicode编程需要做哪些修改?
window 2k以后的系统底层都是基于Unicode的,就算你调用ANSI的API(以A结尾比如SetWidowsTextA),系统也会在你的进程默认堆上动态分配一块内存,存放转换后的Unicode字符串,然后把转换后的字符串传递给API,如果调用了返回值为ANSI字符串的'API,Windows会在后台进行相反的转换。
其实VC中进行Unicode编程也不麻烦,大概如下:
1.为工程添加UNICODE和_UNICODE预处理选项,在中就是 项目 -> 属性 -> c/c++ -> 预处理器 在"预处理定义"中加入这两个宏定义(vc6中 project -> settings -> c/c++ -> general 中的 Preprocessor definitions).
ude <TCHAR.h>(一般在stdafx.h中)然后把所有使用char*定义变量的地方换为LPTSTR/TCHAR*或LPCTSTR/const TCHAR*(对应于const char*).
3.把所有的字符串常量用_T()宏包起来,比如 TCHAR* szText = _T("我的Text");
4.所有的C库字符串操作函数也做相应的替换,比如
strlen ->_tcslen
strcat ->_tcscat
strcmp ->_tcscmp
......
注意,这些函数中的"文本长度"均为字符个数,而非char个数具体参看MSDN.
调用一般不用做特殊处理,当定义了UNICODE和_UNICODE后,所有的API都会被宏指向W结尾的版本(不定义则指向A结尾的版本).
其实,上面所说的并非强制你使用UNICODE,如果你还想回去使用ANSI,没有问题,把第一步定义的两个宏拿掉就OK了,继续我们的ANSI编程。
2. TCHAR同char的区别
TCHAR 就是当你的字符设置为什么就是什么
例如:程序编译为 ANSI, TCHAR 就是相当于 CHAR
当程序编译为 UNICODE, TCHAR 就相当于 WCHAR ,每个字符占两个字节
3. BOOL同bool的区别
意义上没什么区别,但却是两种类型.
bool应该是C语言里定义的,返回值为true和false(事实上就上1和0)
而BOOL应该是MFC及SDK里定义返回值的.
它的定义应该是:typedef int BOOL;(WINDEF.H中定义)
也就是说它是int型的
返回值是大写的TRUE 和FALSE
定义如下:
#define FALSE 0
#define TRUE 1
(AFX.H中如此定义)
一个是布尔型,一个是整型.
事实上整型如果取1和0就可以代替布尔型了.
-
华东师大近日举办中国首批博士与研究生座谈会
据《新闻晚报》报道,在新中国首批博士学位颁发30周年之际,华东师大昨天召开了学问人生纪念中国首批博士学位颁发30周年专题座谈会,首批18名博士中的11人与当代研究生现场座谈,从博士生水平是否下滑到就业问题,从你幸福吗到中国梦,老博士们的人生经历给了今天的硕士、...
-
考研英语阅读出题热点之英国脱欧
2016年6月24日,英国的欧盟公投以脱欧派以得票率52%胜出,这意味着英国将有可能成为欧盟成立以来第一个退出的国家。公投结果公布后不久,英国首相卡梅伦宣布将辞去首相职务。英国脱欧结果公布,英镑持续下跌,国际油价持续下跌,黄金价格上涨。"英国脱欧"这个事件各个媒体...
-
2016年南京师范大学硕士研究生复试录取办法
南京师范大学已公布了2016年硕士研究生复试的录取办法,请上线考生及时查看信息,了解考研复试的相关注意事项,下面是小编搜集整理的详细资料,供大家阅读查看。一、基本原则1.科学选拔,保证质量。树立科学的人才选拔理念,坚持能力与知识考核并重,着力加强对考生创新能...
-
中国农业大学考研调剂问题
1.中国农业大学二志愿调剂基本条件(1)校内调剂遵循专业相近、业务课相近的原则,考试成绩必须达到报考一志愿门类的教育部复试分数线和我校接收学科的复试分数线。(2)根据我校改善生源结构、提高招生质量的需要,接收校外二志愿调剂生时除初试成绩必须满足报考门类教育...