LPSTR与LPWSTR字符编码问题

LPSTR,在MBCS宏对应下为字符串指针,即char *,在UNICODE宏对应的指针,即 unsigned char *。在UNICDE宏定义下,LPSTR与LPWSTR等价。


LPSTR 是指向一个字符串的32位指针,每个字符占一个字节

LPCSTR 指向一个常量字符串的32位指针,每个字符占一个字节。

LPTSTR 指向一个字符串的32位指针,每个字符可能占一个字节或两个字节。

LPCTSTR 指向一个常量字符串的32位指针,每个字符可能占一个字节或两个字节。


Windows 提供两种字符集ANSI和Unicode,前者处理英文诗使用单字节,处理中文时使用双字节,后者无论何种都使用双字节。


关于_T()与_L()区别:

如果编码方式为ANSI,_T()不起任何作用,如果编码方式为Unicode,那么编译器会把_T()内容使用Unicode编码。

_L()宏则无论使用何种方式编译,都一律使用Unicode方式保存。


当定义了_Unicode时,_T()与_L()相同


在ANSI编码下,char,可以使用字符处理函数,strcpy(),strcat(),strlen()等以str开头的函数。

在Unicode编码下,wchar_t,可以使用字符处理函数,wcscpy(),wcscat,wcslen()等以wcs打头的函数。






你可能感兴趣的:(windows,编码,宏)