MFC学习笔记01-(_T()与L的区别)

1,编码方式
ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。(占用一个字节,即一个字节表示一个字符

GBK/GB2312/GB18030:表示汉字。GB2312表示简体中文,GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名,GB18030表示中文,兼容GBK和GB2312。(占用两个字节,即两个字节表示一个字符

Unicode编码:包含世界上所有的字符,是一个字符集。(占用两个字节,即两个字节表示一个字符

UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

注:C++支持两种字符串,即常规的ANSI编码(使用”“包裹)和Unicode编码(使用L”“包裹)

2,MFC中(L字符串)表示Unicode字符串

CString s=L"Unicode";

_T(“”)是一个宏,定义于tchar.h下。

#define __T(x) L ## x
#define _T(x) __T(x)
CString s=_T("Unicode");
//CString s="Unicode";//Error
//CString需要接受TCHAR类型的参数
//当没有定义_UNICODE宏时,TCHAR = char
//当定义了_UNICODE宏时,TCHAR = wchar_t

_T和L的区别在于,L不管你是以什么方式编译,一律以UNICODE方式保存。

你可能感兴趣的:(MFC学习笔记)