更新时间:2022-09-16 17:59:07
在Windows中,字符集编码有两种:ANSI和Unicode。
ANSI使用单字节,一般用于处理英文,而中文是双字节字符。所以,在处理中文字符时,ANSI编码有时会不方便,出现半个汉字的情况,于是就造成乱码。
Unicode编码使用双字节,即每个字符都占两个字节,这可以很好地兼容汉字。因为不能确定编译完的程序最终会用在什么环境什么字符集上,所有为了提高兼容性,我们一般要在中文字符串前,加宏_T,_TEXT。
比如:_T(”你好,MFC“)
若程序以ANSI格式编译,则_T宏其实没有起任何作用
若程序以Unicode格式编译,则_T会把”你好,MFC“以Unicode格式保存,中英文都被处理。而另一个_L宏则是强制性的以Unicode格式保存(双字节)。_T与_L的区别就在于,一个是适配的,一个是强制的。
wchar_t Str[] = L "Hello World!" ;
这个就是双子节存储字符了。 _T是一个适配的宏~ 当 #ifdef _UNICODE的时候 _T就是L 没有#ifdef _UNICODE的时候 _T就是ANSI的。 比如 LPTSTR lpStr = new TCHAR [32];
TCHAR * szBuf = _T( "Hello" );
|