【win32_003】不同字符集下的通用字符串语法TCHAR、TEXT、PTSTR、PCTSTR
TCHAR 通用
根据项目属性是否使用Unicode字符集,TCHAR被解释为CHAR(char)或WCHAR(wchar_t)数据类型。
TCHAR a = ‘A’ ;
TCHAR arr [] =TEXT(“AA”);
TCHAR arr [100] =TEXT(“AA”);
TCHAR *pstr = TEXT(“AA”);
TEXT宏
#ifdef UNICODE
#define __TEXT(quote) L##quote
#else
#define __TEXT(quote) quote
#endif
#define TEXT(quote) __TEXT(quote)
##被称为“令牌粘贴”,表示把字母L和宏参数拼接在一起,假设宏参数quote是"Hello!“,那么L##quote就是L"Hello!”。
用法
TCHAR szBuf[] = TEXT(“C语言”);
字符串数据类型(PTSTR)
ANSI
PSTR和LPSTR表示CHAR类型字符串;
PCSTR和LPCSTR表示CHAR类型常字符串,C表示const。
UNICODE
PWSTR和LPWSTR表示WCHAR类型字符串;
PCWSTR和LPCWSTR表示WCHAR类型常字符串。
通用
PTSTR和LPTSTR表示TCHAR类型字符串;
PCTSTR和LPCTSTR表示TCHAR类型常字符串。
PCTSTR pstr = TEXT(“C语言”);
char类型(多字节字符集ANSI)
用char数据类型定义变量就表示使用多字节字符集存储字符,使用1字节或多字节来表示一个字符。
单个字符
char c = ‘A’;//占用1Byte
字符串指针
char *pStr = “Hello!”;//指针占4Byte,字符串占7Byte(含结束标志0)
字符串数组
char szStr[] = “Hello!”;//数组占7Byte(含结束标志0)
wchar_t类型(宽字节字符集unicode)
用VS创建项目的时候,默认使用Unicode字符集,可以通过在解决方案资源管理器中右键单击项目名称→属性→配置属性→高级→字符集进行设置。
用wchar_t数据类型定义变量表示使用Unicode字符集存储字符,使用2字节来表示一个字符。
宽字符集 unicode
Unicode(一般指UTF-16)统一用2字节来表示一个字符。
Unicode是现代计算机的默认编码方式。
单个宽字符
wchar_t wc = L’A’;
大写字母L表明右边的字符需要使用宽字符存储。
宽字符串指针
wchar_t *pwStr = L"Hello!";//其中包括12字节的字符和2字节的字符串结束标志0
宽字符数组
wchar_t szwStr[] = L"Hello!";//14Byte
入口函数
ANSI
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
UNICODE
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow);
通用
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow);
如果使用_tWinMain,那么必须包含tchar.h头文件。