当前位置:首页 > 网络编程 > 软件语言 > C++ > C++字符串完全指南 - Win32字符编码(二)

C++字符串完全指南 - Win32字符编码(二)

点击次数:60 次 发布日期:2008-12-12 16:24:35 作者:源代码网
源代码网推荐 何时使用TCHAR 和Unicode 可能会有疑问:“为什么要用Unicode?我一直用的都是普通字符串。

源代码网整理以下 何时使用TCHAR 和Unicode

可能会有疑问:“为什么要用Unicode?我一直用的都是普通字符串。”

在三种情况下要用到Unicode:

程序只运行于Windows NT。 处理的字符串长于MAX_PATH定义的字符数。 程序用于Windows XP中的新接口,那里没有A/W版本之分。

大部分Unicode API不可用于Windows 9x。所以如果程序要在Windows 9x上运行的话,要强制使用MBCS API (微软推出一个可运行于Windows 9x的新库,叫做Microsoft Layer for Unicode。但我没有试用过,无法说明它的好坏)。相反,NT内部全部使用Unicode编码,使用Unicode API可以加速程序运行。每当将字符串处理为MBCS API时,操作系统都会将字符串转换为Unicode并调用相应的Unicode API 函数。对于返回的字符串,操作系统要做同样的转换。尽管这些转换经过了高度优化,模块尽可能地压缩到最小,但毕竟会影响到程序的运行速度。

NT允许使用超长文件名(长于MAX_PATH 定义的260),但只限于Unicode API使用。Unicode API的另外一个优点是程序能够自动处理输入的文字语言。用户可以混合输入英文,中文和日文作为文件名。不必使用其它代码来处理,都按照Unicode编码方式处理。

最后,作为Windows 9x的结局,微软似乎抛弃了MBCS API。例如,SetWindowTheme() 接口函数的二个参数只支持Unicode编码。使用Unicode编码省却了MBCS与Unicode之间的转换过程。

如果程序中还没有使用到Unicode编码,要坚持使用TCHAR和相应的宏。这样不但可以长期保持程序中DBCS编码的安全性,也利于将来扩展使用到Unicode编码。那时只要改变预处理中的设置即可!

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华