windows核心编程学习日记-字符和字符串处理 上篇

Unicode字符:

一般情况下,每个Unicode字符都是用UTF-16编码,UTF的全称是Unicode Transformation Format(Unicode转换形式),UTF

将每个字符编码为2个字节(或者说是16位,一个字节占8位).


目前在Windows操作系统编程中,主要是使用的Unicode字符,为什么要用Unicode字符呢,我的认为最重要的几点是:

1.Windows内部的一切工作都是使用Unicode字符和Unicode字符串来进行的.所以加入我们坚持传入ANSI字符或者是ANSI字符串,

   Windows就会被迫分配内存,并将ANSI字符或字符串转换为等价的Unicode形式.所以,Unicode提升了应用程序的效率.占用内存更

   少.

2.使用Unicode,应用程序的代码很容易与COM集成(后者要求使用Unicode字符和Unicode字符串).


声明ANSI字符和Unicode字符的区别:

1.ANSI:

   //8位字符

   char c = 'A';

   //字符串

   char szBuffer[100] = "A String";

2.Unicode:

    //16位字符

   wchar_t c =L  'A';

    //字符串

    wchar_t szBuffer[100] = L "A String";

    字符串之前的大写字母 “L” 通知编译器该字符串应当编译为一个Unicode字符串.


以下是Windows开发团队自己定义的数据类型,在WinNT.h头文件中:

    //8位

    typedef  char CHAR;

    typedef  CHAR *PCHAR;

    typedef  CHAR *PSTR;

    typedef  CONST CHAR *PCSTR

    //16位

    typedef  wchar_t WCHAR;

    typedef  WCHAR *PWCHAR;

    typedef  WCHAR *PWSTR;

    typedef  CONST WCHAR *PCWSTR;

    以及

    typedef  _nullterminated WCHAR *NWPSTR,  *LPWSTR,  *PWSTR;

    前缀_nullterminated是一个头部注解,它描述了一个类型如何用作函数的参数和返回值.


在写代码的时候,可以使用ANSI和Unicode字符/字符串使其能通过编译:

    #ifdef Unicode

    typedef WCHAR TCHAR, *PTCHAR,  PTSTR;

    typedef CONST WCHAR *PCTSTR;

    #define __TEXT(quote)  quote


    #define __TEXT(quote)  ##quote

  

    #else

    typedef  CHAR TCHAR, *PTCHAR,  PTSTR;

    typedef  CONST CHAR *PCTSTR;

    #define __TEXT(quote)  quote

  

    #endif

    #define  TEXT(quote)  __TEXT(quote)

    利用这些类型和宏,无论是使用ANSI还是Unicode字符都能通过编译.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值