A2W、W2A、A2T、T2A _T() 的含义及使用方法
1、A2W和W2A
在《Window核心编程》,多字节和宽字节之间转换比较麻烦的,MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解。那么使用ATL的一个很好的字符串的转换宏:A2W和W2A。
char:8位字节类型,表示ASCII码
WCHAR:16位字符类型,表示Unicode字符
typedef wchar_t WCHAR;
typedef unsigned short wchar_t;
(1)A2W的用法:char* ——> WCHAR*
USES_CONVERSION;
CString cstring;
char* achar = "qwer";
const WCHAR* wchar = A2W(achar);
cstring = wchar;
(2)W2A的用法:WCHAR*——> char*
USES_CONVERSION; CString cstring;
WCHAR* wchar = _T("qwer");
const char* achar = W2A(wchar);
cstring = wchar;
(3)A2T的用法:char* ——> CString
USES_CONVERSION;
char* achar = "qwer";
CString cstring = A2T(achar);
(4)W2A的用法:CString ——> char*
USES_CONVERSION;
CString cstring = _T("qwer");
char* achar = T2A(cstring);
(5)_T("")是一个宏,定义于tchar.h下
#define _T(x) __T(x)
#ifdef _UNICODE
#define __T(x) L ## x
#else
#define __T(x) x
——————————————————————