Windows定义的关于字符串的几种类型

来源:互联网 发布:sql password 编辑:程序博客网 时间:2024/05/18 01:17

经常被这几种类型搞混淆:PSTR, PWSTR, PTSTR, PCSTR, PCWSTR, PCTSTR, LPSTR, LPWSTR, LPTSTR, LPCSTR, LPCWSTR, LPCTSTR

不过只要明白了每个字母代表什么意思,就很容易区分这种类型了。首先解释一下类型名中几个大写字母所代表的含义:

N:代表near,在16位系统中代表16位的段内地址

L:代表long(far),在16位系统中代表16位的段地址+16位的偏移地址

在32位系统中 N和L已经没有作用,只是为了向前兼容(兼容16位机器)才保留这些定义。

P:代表指针

C:代表CONST(const)

W:代表WCHAR(wchar_t)

T:代表宏_T(一个兼容的宏,用于区分是否定义了UNICODE,如果定义了UNICODE或者_UNICODE,则表示WCHAR,否则表示char)

CH:char的简写

STR:string的简写

排列顺序:[L/N][P][C][W/T][CH/STR]

所以开始提到的几种类型的关系就是:

1, 普通常量字符串指针:PSTR, PWSTR, PTSTR

if UNICODE is defined 

PTSTR = PWSTR 

else 

PTSTR = PSTR 

2,普通常量字符串指针:PCSTR, PCWSTR, PCTSTR

if UNICODE is defined 

PCTSTR = PCWSTR 

else 

PCTSTR = PCSTR 

3,长非常量字符串指针:LPSTR, LPWSTR, LPTSTR

if UNICODE is defined 

LPTSTR = LPWSTR 

else 

LPTSTR =LPSTR 

4,长常量字符串指针:LPCSTR, LPCWSTR, LPCTSTR

if UNICODE is defined 

LPCTSTR =LPCWSTR 

else 

LPCTSTR = LPCSTR 


这样几种类型就很容易区分了