码迷,mamicode.com
首页 > 其他好文 > 详细

LPSTR、LPCSTR、LPWSTR、LPCWSTR、LPTSTR、LPCTSTR的来源及意义

时间:2016-11-05 02:54:39      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:wchar_t   编码方式   signed   字符串资源   编码   new t   layer   cts   英文字母   

    

1. Unicode字符集:

  它是用两个字节表示一个字符的方法。比如字符‘A‘在ASCII下面是一个字符,可‘A‘在UNICODE下面是两个字符,高字符用0填充,而且汉字‘程‘在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。

2. MCBS字符集:

  即多字节字符集,它是不定长表示世界文字的编码。MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但表示其他文字时就需要用多字节。

3. Unicode宏:

  C++宏实现ANSI和Unicode的通用编程的本质是根据”_UNICODE”(注意,有下划线)定义与否,这些宏展开为ANSI或Unicode字符(字符串)。MBCS宏对应的字符串指针是char*也就是LPSTR,UNICODE对应的指针是unsigned short*也就是LPWSTR,为了写程序方便微软定义了类型LPTSTR,在MBCS下他就是char*, 在UNICODE下它是unsigned char*,这样你就可以重定义一个宏进行不同字符集的转换了。

4. LPSTR、LPCSTR、LPWSTR、LPCWSTR、LPTSTR、LPCTSTR的意义:

LPSTR:32bit指针指向一个字符串,每个字符占1字节;

LPCSTR:32bit指针指向一个常字符串,每个字符占1字节;

LPWSTR:32bit指针指向一个字符串,每个字符占2字节;

LPCWSTR:32bit指针指向一个常字符串,每个字符占2字节;

LPTSTR:32bit指针指向一个字符串,每字符可能占1字节或2字节,取决于Unicode是否定义;

LPCTSTR:32bit指针指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义;

5. 表示方式

  (1)L表示字符串资源采用Unicode编码方式,示例如下:

    wchar_t Str[]=L"Hello World!"; //每个字符都用2个字节来存储

  (2)_T是一个适配的宏

    当#ifdef _UNICODE的时候_T就是L,没有#ifdef _UNICODE的时候,_T就是ANSI的。

    比如:

    LPTSTR lpStr = new TCHAR[32];

    TCHAR* szBuf = _T("Hello");

    以上两句使得无论是在UNICODE编译条件下都是正确编译的。

LPSTR、LPCSTR、LPWSTR、LPCWSTR、LPTSTR、LPCTSTR的来源及意义

标签:wchar_t   编码方式   signed   字符串资源   编码   new t   layer   cts   英文字母   

原文地址:http://www.cnblogs.com/jmliao/p/6032050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!