最近在工作中对单字符和宽字符的使用有点模糊不清了,所以周末把最常用的总结了下。
1. 单字符 char
使用 char *p="Hello" ;
宽字符 wchar_t
使用 wchar_t *wp=L"Hello“;
注意使用wchar_t 的时候字符串前面要加上L
2.如果包含了头文件#include<TCHAR.H>,那么可以用TCHAR,_T,_TEXT来定义统一的字符串
使用 TCHAR *tp=_T("Hello");
或者 TCHAR *tp=_TEXT("Hello");
如果#define _UNICODE ,那么 tp表示一个wchar_t *,否则tp表示char*
3. 如果包含了头文件#include<WINNT.H>或者#include<WINDEF.H>或者
#include<WINDOWS.H>,那么
CHAR 等价于 char
WCHAR 等价于 wchar_t
TCHAR 跟是否 #define UNICODE 有关,如果定义了UNICODE ,那么
TCHAR 等价于 WCHAR 也就是wchar_t,否则
TCHAR 等价于 CHAR ,也就是char
这时候定义统一的字符串可以这么定义:
TCHAR *tp=TEXT("Hello");
如果#define UNICODE ,那么 tp表示一个wchar_t *,否则tp表示char*
4. 关于LPSTR,LPWSTR,LPTSTR 的定义
这几个也是在WINNT.H里面定义的
LPSTR 是指向char 的指针,即 char *
LPWSTR 是指向 wchar_t的指针,即 wchar_t *
如果 #define UNICODE ,那么
LPTSTR 即 wchar_t *,否则
LPTSTR 即 char*
如果这三个中间加有字符"C",表示常量字符串。