Windows编程 Unicode编码和通用字符类型TCHAR

来源:互联网 发布:网络教学平台系统 编辑:程序博客网 时间:2024/05/29 04:35


   编写代码中,代码中的字符串类型,应尽量使用宽字节类型,如 wchar_t,DWORD,

   因为自Windows NT开始,Windows的所有版本都使用Unicode来实现,纵然你使用的是ANSI字符串,函数也会首先转为Unicode来构建,


   所以使用宽字节类型字符串,效率更高,更加节省资源,更加贴近国际化.


  同样,我们在创建项目的时候,尽量要使用Unicode格式选项,这样编译器会默认我们使用的是宽字符字符串类型,


  我们在编写源代码的时候,也请统一使用wchar_t或者TCHAR作为字符串的类型.


  使用统一的宽字符串类型,有利于我们进行统一化管理.


   TCHAR是通用字符类型,只有选择了Unicode选项来进行项目设置的时候,它表示的是WCHAR类型,否则,则TCHAR代表char.


   在中国,基于用户经常输入汉字作为字符串 传递给程序的时候,如果使用char类型会非常的不方便,


   所以,统一使用Unicode类型,将会极大的减轻我们char转化为wchar_t的负担,同样,也可以使得程序代码更加统一和简洁.


   注意:


   使用通用类型TCHAR,注意以下3点:


   凡是使用char的地方,都用TCHAR取代;

   凡是用char*的地方,都用LPTSTR取代;

   凡是定义在双引号中的字符串常量,都用TEXT宏或者_T宏重写.(例子:TCHAR  Tstr  = _T("这是一个宽字符常量!");)


   对应的通用字符类型TCHAR处理函数(相对应C\C++中的char字符处理函数),如下所示


取字符串长度 |   strlen     (C\C++)            |      _tcslen      (TCHAR)

字符串复制    |   strcpy     (C\C++)           |      _tcscpy     (TCHAR)

字符串连接    |   strcat     (C\C++)            |      _tcscat      (TCHAR)

字符串比较    |   strcmp    (C\C++)           |      _tcscmp     (TCHAR)

数据格式化成字符串    |   sprintf     (C\C++)           |      _stprintf     (TCHAR)

字符串转为浮点数       |   atof         (C\C++)           |      _tstof        (TCHAR)

 


    另外,如果要在屏幕打印Unicode字符串,需要在程序入口处设置下本地属性.


#include <locales.h>           //语言本地化处理函数头文件,其中包含中文,日文,韩文,意大利文,俄文等许多个国家字符串输出的函数int _tmain(int argc,  _TCHAR* argv[]){          //设置本地属性          setlocale(LC_ALL,"CHS");//------------>设置本地属性为中文   chs表示中国文字的意思 china string?         _stprintf("%s",L"中国文字!!");  输出宽字符类型的字符串--->"中国文字!!"         //其他代码.}

0 0
原创粉丝点击