LPTSTR 和 LPCTSTR 和 LPWSTR等等,它们的区别是什么,他们的原形是什么?

解决方案 »

  1.   

    LPSTR  32位字符串指针 lpszName 
    LPCSTR  32位常量字符串指针 
    LPCTSTR  如果_UNICODE定义,则为32位常量字符串指针 
    LPWSTR是unicode
      

  2.   

    LPCSTR 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR*)
      

  3.   

    LPSTR          32-bit指针,指向一个字符串
    LPCTSTR        32-bit指针,指向一个常数字符串,此字符串可移植到Unicode和DBCS(双字节字集)
    LPTSTR         32-bit指针,指向一个字符串,此字符串可移植到Unicode和DBCS(双字节字集)
    LPCSTR         32-bit指针,指向一个常数字符串
    LPWSTR          以\0结束的Unicode字符串,即双字节
      

  4.   

    区别楼上已经说了,我不废话,MSDN是这样定义原型的:typedef CONST CHAR *LPCSTR, *PCSTR;
    typedef LPCSTR LPCTSTR;
    typedef WCHAR *LPWSTR, *PWSTR;
    typedef CONST WCHAR *LPCWSTR, *PCWSTR;
      

  5.   

    LPSTR  指向一个以 NULL 结尾的8 bit ANSI字符串
    LPWSTR 指向一个以 NULL 结尾的16 bit ANSI字符串
    LPTSTR 如果定义了UNICODE宏(#def UNICODE),LPTSTR等同于lpwstr,如果没有定义unicode宏,
    lptstr等同于LPSTR
     
    区别于有C的那一套,上面的三个都是变量,有C的那一套都是常量。
    LPSTR对应与LPCSTR
    LPWSTR对应与LPCWSTR
    LPTSTR对应与LPCTSTR
     
     
    CHAR   8bit  ansi字符
    WCHAR 16bit unicode字符
    TCHAR 如果定义了UNICODE宏(#def UNICODE),TCHAR 等同于WCHAR ,如果没有定义unicode宏,
    TCHAR 等同于CHAR   
     
    字符串操作,你们熟悉的那套是针对ANSI字符串设计的,
    还有一套针对宽字符设计的函数。
    例如:
     
    wcsncpy
    wcsncat
    strncmy
    同样,还有一套unicode字符串和ansi字符串之间相互转换的函数:
    例如:
    WideCharToMultiByte