科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道vc++中各种字符串的表示法

vc++中各种字符串的表示法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

字符串的表示法

作者:ghost 来源:CSDN 2007年9月28日

关键字: ghost VC++ 字符串 表示法

  • 评论
  • 分享微博
  • 分享邮件
首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位);

        LP的含义是长指针(long pointer)。LPSTR是一个指向以‘\0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR(并且长指针(LP)和短指针(P)是等价的)。而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。

        我们知道TCHAR在采用Unicode方式编译时是wchar_t,在普通时编译成char,业界推出的Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。

        然后为了实现两种编码的通用,提出了TCHAR的定义:
       如果定义_UNICODE,声明如下:
               typedef wchar_t TCHAR;
       如果没有定义_UNICODE,则声明如下:
               typedef char TCHAR;
       LPTSTR和LPCTSTR中的含义就是每个字符是这样的TCHAR。
      CString类中的字符就是被声明为TCHAR类型的,它提供了一个封装好的类供用户方便地使用。


     LPCTSTR:
     #ifdef _UNICODE
        typedef const wchar_t * LPCTSTR;
     #else
        typedef const char * LPCTSTR;
     #endif



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1566827

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章