- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows字符串类型
C++主要使用的是C-Style字符串,而M$在Windows中又增加了很多C-Style字符串的变体。这个一多嘛,就容易乱~??所谓字符串,就是由字符组合而成,所以我们先来将将字符类型。??首先,存在两种最基本的字符类型:char和wchar_t。char大家都很熟悉了,我就跳过。至于wchar_t,是应用于UNICODE的宽字符,即一个字符2Bytes,16Bits。事实上,Windows中利用
typedef?unsigned?short?wchar_t
定义wchar_t??然后为了书写方便(MS我也没觉得有多大差别),M$又把那两个基本字符类型重新的给他typedef了一遍,即:
typedef?char?CHARtypedef?wchar_t?WCHAR
为了使得兼容性更加,M$又定义了TCHAR数据类型:
#ifdef?UNIOCDE??typedef?WCHAR?TCHAR#else??typedef?CHAR?TCHAR#endif
这样,你不用关心是要使用ANSI字符串还是Unicode,编译器会自动根据你的OS来选择。??然后,M$又利用上面的几种基本数据类型,定义了一些字符串指针类型。LPSTR和LPCSTR:LPSTR是指向以0结尾的ANSI字符串的指针,后者是const指针
typedef?CHAR*?LPSTRtypedef?const?CHAR*?LPCSTR
LPWSTR和LPCWSTR:LPWSTR是指向以0结尾的UNICODE字符串的指针,后者是const指针
typedef?WCHAR*?LPWSTRtypedef?const?WCHAR*?LPCWSTR
同样,为了摆脱对ANSI还是UNICODE的选择麻烦,M$也增加了LPTSTR和LPCTSTR两个字符串指针类型。他们被如下定义:
typedef?TCHAR*?LPTSTR#ifdef?UNICODE??typedef?LPWSTR?LPTSTR#else??typedef?LPSTR?LPTSTR#endif/////////////////////////////////////typedef?const?TCHAR*?LPCTSTR#ifdef?UNICODE??typedef?LPCWSTR?LPCTSTR#else??typedef?LPCSTR?LPCTSTR#endif
ps:你会在某些地方看到存在PSTR/PWSTR/PTSTR等等,与上面的只却一个L的字符串指针类型。实际上,这个是长指针和短指针问题。LPXX是长指针,PXX是短指针。不过在32Bit的系统上,二者已经没有区别。然后说说两个比较成熟好用的字符串类型:String和CStringString是C++的标准字符串,需要string(不带.h)头文件和std名字空间支持。CString是M$为MFC设计的字符串,功能更加强大,而且这玩意儿是安全的。需要atlstr.h文件和MFC?DLL的支持??不过目前已经有人将此类型从MFC中分离~
?
?
?为了增强程序的通用性,还必须注意以下几点:
1、既然程序里不能出现char,那表示字符串时,就不能再习惯性的用char*了。应该改为TCHAR*,或者是PTSTR。后一种是?windows的变量,类似的有:PSTR、PTSTR、LPTSTR、LPSTR、PCTSTR等等等等。这也是让人一开始接触会头大的地方。其实并非如此恐怖,我以PCTSTR为例做个解释:P代表指针(和LP是一个东西,LP的本意是Long?Pointer,16位windows时代的遗留物。),C代表const,T代表TCHAR,STR代表字符串。所以PCTSTR其实就是const?TCHAR*?的意思。而PSTR也就是char*?的意思。所以我们在表示字符串时也不能使用PSTR等不带T的变量类型名。
2、表示字符串常量时,不能简单的用双引号括起来,因为那代表ascii字符串。同样也不能在前面加L,因为那代表unicode。我们的程序要做到的是通用性,即不是ascii也不是unicode。所以我们在字符串前应该加的是TEXT,比如MessageBox(NULL,TEXT(Fypher),TEXT(FF),MB_OK)。TEXT还可用于字符。比如TCHAR?m=TEXT(A);
3、TCHAR?FF[50]。FF能装多少字符?哈!不要习惯性的sizeof(FF)了,应该_countof(FF)或者sizeof(FF)/sizeof(TCHAR)。因为我们不确定TCHAR到底是char?还是?wchar_t。
4、该和一堆老朋友说再见了……我们不能再使用以前
您可能关注的文档
- VBA代码来实现“鼠标移过物体触发动画”的效果.doc
- VBA技巧21引用工作表的方式.doc
- VBS入门教程(初学者适用).doc
- VB函数大全MicrosoftWord文档.docx
- VB如何判断用户的系统是XP还是2000或者98等.doc
- VB控件大全属性详解形状.doc
- VB数据类型转换函数.doc
- VC++实现Windows下直接读写磁盘扇区.doc
- VC6.0编译常见错误.doc
- VC6下变参宏的定义.docx
- 人教版初中物理同步11.2 功率(考点解读)(原卷版).pdf
- 人教版初中物理同步12.2 滑轮(专题训练)(原卷版).pdf
- 人教版初中物理同步11.1 功(专题训练)(原卷版).pdf
- 人教版初中物理同步第七章《力》单元测试卷(基础卷)(原卷版).pdf
- 人教版初中物理同步12.3 机械效率(考点解读)(原卷版).pdf
- 2025届高考化学一轮总复习第6章物质结构与性质元素周期律第28讲元素周期表元素周期律课件.pptx
- 2025届高考化学一轮总复习第4章金属及其化合物第16讲镁铝及其化合物课件.pptx
- 2024年人教版高一英语同步讲义(必修第三册)Unit 3 Diverse Cultures:Period 1 Reading and Thinking(学案)(原卷版).pdf
- 2025版新教材高中生物第3章体液调节第3节体液调节与神经调节的关系第1课时体液调节与神经调节的比较和体温调节课件新人教版选择性必修1.pptx
- 2025届高考化学一轮总复习第6章物质结构与性质元素周期律第29讲化学键课件.pptx
文档评论(0)