windows中的字符串类型

windows中的字符串类型

ID:8964715

大小:41.86 KB

页数:18页

时间:2018-04-13

windows中的字符串类型_第1页
windows中的字符串类型_第2页
windows中的字符串类型_第3页
windows中的字符串类型_第4页
windows中的字符串类型_第5页
资源描述:

《windows中的字符串类型》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、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我也没觉得有多大差别)

2、,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字符串的

3、指针,后者是const指针typedef CHAR* LPSTRtypedef const CHAR* LPCSTRLPWSTR和LPCWSTR:LPWSTR是指向以0结尾的UNICODE字符串的指针,后者是const指针typedef WCHAR* LPWSTRtypedef const WCHAR* LPCWSTR同样,为了摆脱对ANSI还是UNICODE的选择麻烦,M$也增加了LPTSTR和LPCTSTR两个字符串指针类型。他们被如下定义:typedef TCHAR* LPTSTR#ifdef UNICODE  typedef LPWSTR

4、 LPTSTR#else  typedef LPSTR LPTSTR#endif/////////////////////////////////////typedef const TCHAR* LPCTSTR#ifdef UNICODE  typedef LPCWSTR LPCTSTR#else  typedef LPCSTR LPCTSTR#endifps:你会在某些地方看到存在PSTR/PWSTR/PTSTR等等,与上面的只却一个L的字符串指针类型。实际上,这个是长指针和短指针问题。LPXX是长指针,PXX是短指针。不过在32Bit的系统上

5、,二者已经没有区别。然后说说两个比较成熟好用的字符串类型:String和CStringString是C++的标准字符串,需要string(不带.h)头文件和std名字空间支持。CString是M$为MFC设计的字符串,功能更加强大,而且这玩意儿是安全的。需要atlstr.h文件和MFC DLL的支持。不过目前已经有人将此类型从MFC中分离~   为了增强程序的通用性,还必须注意以下几点:1、既然程序里不能出现char,那表示字符串时,就不能再习惯性的用char*了。应该改为TCHAR*,或者是PTSTR。后一种是 windows的变量,类似的有:

6、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字符串。同样也不

7、能在前面加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、该和一堆

8、老朋友说再见了……我们不能再使用以前的字符串处理函数或者字符处理函数了。比如strlen、strcat、strcmp等等等等……因为这些

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。