zoukankan      html  css  js  c++  java
  • LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义

    UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。   MBCS,它是多字节字符集,它是不定长表示世界文字的编码。MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但表示其他文字时就需要用多字节。   WINDOWS下面的程序设计可以支持MBCS和UNICODE两种编码的字符串,具体用那种就看你定义了MBCS宏还是UNICODE宏。MBCS宏对应的字符串指针是char*也就是LPSTR,UNICODE对应的指针是unsigned   short*也就是LPWSTR,为了写程序方便微软定义了类型LPTSTR,在MBCS下他就是char*,   在UNICODE下它是unsigned   char*,这样你就可以重定义一个宏进行不同字符集的转换了。 LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义:

    LPSTR:32bit指针 指向一个字符串,每个字符占1字节

    LPCSTR:32-bit指针 指向一个常字符串,每个字符占1字节
    LPCTSTR:32-bit指针 指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义
    LPTSTR:32-bit指针 每字符可能占1字节或2字节,取决于Unicode是否定义

    Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。WindowsNT的所有与字符有关的函数都提供两种方式的版本,而Windows9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello"。如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存.

     Windows核心编程的第一章。

    L是表示字符串资源为Unicode的。

    比如
    wchar_t Str[] = L"Hello World!";
    这个就是双子节存储字符了。

    _T是一个适配的宏~


    #ifdef _UNICODE的时候
    _T就是L
    没有#ifdef _UNICODE的时候
    _T就是ANSI的。

    比如

    LPTSTR lpStr = new TCHAR[32];
    TCHAR* szBuf = _T("Hello");
    以上两句使得无论是在UNICODE编译条件下都是正确编译的。

    而且MS推荐你使用相匹配的字符串函数。
    比如处理LPTSTR或者LPCTSTR 的时候,不要用strlen ,而是要用_tcslen

    否则在UNICODE的编译条件下,strlen不能处理 wchar_t*的字符串。

    T是非常有意思的一个符号(TCHAR、LPCTSTR、LPTSTR、_T()、_TEXT()...),它表示使用一种中间类型,既不明确表示使用 MBCS,也不明确表示使用 UNICODE。那到底使用哪种字符集?编译的时候才决定


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/douzixinxin/archive/2006/07/03/869937.aspx

  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/wd775/p/1683363.html
Copyright © 2011-2022 走看看