• 读书笔记1 Unicode


    读书笔记1 --Unicode

    • 宽节节
    宽字节不需要Unicode.Unicode是一种可能的宽字符编码.ANSI C也支持多字节字符集.
    C中的宽字符基于wchar_t数据类型 typedef unsigned short wchar_t  (无符号短整型,16位宽)
    wchar_t * p=L"Hello";
    static wchar_t a[]=L"Hello";
    L代表 long

    wchar_t c=L'A'; 

    这里的L通常是不必要的.编译器无论如何会对该字符进行零扩充
    计算字符串长度时strlen(const char *) 对应的宽字节版本函数为wcslen(const wchar_t *)
    • 维护单一源码

    一系列的宏皆为维护既能按ASCII编译又能按Unicode编译的单一代码文件.

    TCHAR.H头文件定义如下宏:
    如果定义了 _UNICODE标识符
    typedef wchar_t TCHAR
    反之
    typedef char TCHAR
    #define __T(x) L##x
    #define _T(x) __T(x)

    #define _TEXT(x) __T(x)

    用_T(x)宏来定义字符串文字,根据_UNICODE的标识符,将字符串解释为宽字符的组合或8位的字符
    如c运行库中计算字符串长度时strlen(const char *),wcslen(const wchar_t *)
    windows字符串函数为:
    int lstrlen(      
        LPCTSTR lpString );
    LPCTSTR的定义:
    winbase.h中
    #ifdef  UNICODE                     // r_winnt
    #ifndef _TCHAR_DEFINED
    typedef WCHAR TCHAR, *PTCHAR;
    typedef WCHAR TBYTE , *PTBYTE ;
    #define _TCHAR_DEFINED
    #endif /* !_TCHAR_DEFINED */
    typedef LPWCH LPTCH, PTCH;
    typedef LPWSTR PTSTR, LPTSTR;
    typedef LPCWSTR PCTSTR, LPCTSTR;
    typedef LPUWSTR PUTSTR, LPUTSTR;
    typedef LPCUWSTR PCUTSTR, LPCUTSTR;
    typedef LPWSTR LP;
    #define __TEXT(quote) L##quote      // r_winnt
    #else   /* UNICODE */               // r_winnt
    #ifndef _TCHAR_DEFINED
    typedef char TCHAR, *PTCHAR;
    typedef unsigned char TBYTE , *PTBYTE ;
    #define _TCHAR_DEFINED
    #endif /* !_TCHAR_DEFINED */
    typedef LPCH LPTCH, PTCH;
    typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR;
    typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR;
    #define __TEXT(quote) quote         // r_winnt
    #endif /* UNICODE */                // r_winnt
    #define TEXT(quote) __TEXT(quote)   // r_winnt
  • 相关阅读:
    SEO优化技巧:16个方法优化网页中的图片
    《Google官方SEO指南》十一:以恰当的方式推广你的网站
    ASP.NET Eval如何进行数据绑定
    浅析ASP.NET页面缓存的几点体会
    浅谈ADO.NET中的五个主要对象
    WCF 入门 WCF基础知识问与答
    Hibernate第一次课(1)
    谷歌、雅虎支持中文域名搜索 有助提升SEO
    告诉SEO初学者:百度收录并非终极目标
    WF 创建 SQL 持久性数据库
  • 原文地址:https://www.cnblogs.com/solo/p/1487892.html
Copyright © 2020-2023  润新知