1.使用unicode编码的好处
因为Windows NT以上的版本都是使用Unicode来构建的,所以不管是创建窗口,显示文本,还是字符串都需要用到Unicode字符串。程序中如果使用ANSI字符串,函数在进行处理时系统将字符串转换成Unicode字符串,虽然是幕后操作但是也会带来一些不必要的系统时间和内存上的开销。而且Unicode字符集在语言的转换上也是相当高效的支持所有语言,有利于应用程序本地化。
2.Windows函数的多数类表中有字符串,则该函数通常有两个版本如:CreateWindowEx可分为CreateWindowExW接受Unicode字符串和CreateWindowExA接受ANSI字符串,在WinUser.h中定义如下
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif
3.Unicode字符都是16位宽,所以经常被称为宽(wide)字符,因此在对字符的处理上不会在使用ANSI版本的库,如C运行库中,strlen就是返回一个ANSI字符串长度的函数,与之对应的函数时wcslen这个函数能放回Unicode字符串长度,个人习惯上使用_tcslen因为TChar.h文件中指出
#ifdef UNICODE
#define _tcslen wcslen
#else
#define _tcslen strlen
#endif
4.新的安全字符串
对与C运行库现有的字符串处理如_tcscpy,_tcscat等字符串在使用上如果操作不当可能会导致应用程序崩溃等问题,所以在新版的字符串处理函数最后增加了_s(代表secure)尽可能在使用中保证内存不溢出。
5.Unicode与ANSI字符转换,即WideCharToMultiByte()与MultibyteToWideChar()的使用