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

本文详细介绍了在编写代码时,如何通过使用宽字节类型(如wchar_t、DWORD)和Unicode选项,提升程序性能、节约资源,并促进国际化。重点讨论了TCHAR的使用规范及统一化管理的重要性,包括其与ANSI字符串的对比,以及如何在项目设置、源代码编写、字符串处理函数选择等方面遵循最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


   编写代码中,代码中的字符串类型,应尽量使用宽字节类型,如 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"中国文字!!");  输出宽字符类型的字符串--->"中国文字!!"
         //其他代码.
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

°默然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值