LPSTR LPTSTR

LPSTR = char*
LPCSTR = const char*

LPTSTR:
如果定义了UNICODE宏,那么LPTSTR = wchar_t*否则LPTSTR = char*

LPCTSTR:
如果定义了UNICODE宏,那么LPCTSTR = const wchar_t*,否则LPCSTR = const char*

告诉你方法,
"LP"前缀是历史遗留的,在Win32下就是 P ,代表指针的含义。
"C"代表const
"T"的含义就是如果定义了UNICODE,它就是宽字符版本,否则就是Ansi版本。
完整定义如下:

//Unicode 版本

typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR;
typedef WCHAR *LPWCH, *PWCH;
typedef CONST WCHAR *LPCWCH, *PCWCH;
typedef WCHAR *NWPSTR;
typedef WCHAR *LPWSTR, *PWSTR;
typedef WCHAR UNALIGNED *LPUWSTR, *PUWSTR;

typedef CONST WCHAR *LPCWSTR, *PCWSTR;
typedef CONST WCHAR UNALIGNED *LPCUWSTR, *PCUWSTR;

// Ansi版本

typedef CHAR *PCHAR;
typedef CHAR *LPCH, *PCH;

typedef CONST CHAR *LPCCH, *PCCH;
typedef CHAR *NPSTR;
typedef CHAR *LPSTR, *PSTR;
typedef CONST CHAR *LPCSTR, *PCSTR;

#ifdef UNICODE
typedef WCHAR TCHAR, *PTCHAR;
typedef WCHAR TBYTE , *PTBYTE ;
typedef LPWSTR LPTCH, PTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR PCTSTR, LPCTSTR;
typedef LPUWSTR PUTSTR, LPUTSTR;
typedef LPCUWSTR PCUTSTR, LPCUTSTR;
typedef LPWSTR LP;
#else
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE , *PTBYTE ;
typedef LPSTR LPTCH, PTCH;
typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR;
typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR;
#endif

原文地址:https://www.cnblogs.com/wllwqdeai/p/10290032.html

时间: 2024-10-22 18:32:51

LPSTR LPTSTR的相关文章

_bstr_t与BSTR

问题: BSTR   a   =   _bstr_t("a"); BSTR   b   =   _bstr_t("b"); CString   c   ; c   =   a; MessageBox(c); c   =   b; MessageBox(c); 为什么消息框中显示的都是   b? 如果这样: _bstr_t   bstr1("a"); BSTR   a   =   bstr1; _bstr_t   bstr2("b&quo

char* wchat_t*互转 及 A2T, T2A宏及其实现原理

char :单字节变量类型,表示ASCII码. wchar_t :宽字节变量类型,用于表示Unicode字符.在<string.h>定义为:typedef unsigned short wchar_t. TCHAR: VS下的中间类型.在“使用Unicode字符集”下TCHAR定义为wchar_t,在字符集 “未设置” 条件下TCHAR定义为char. A2T,及T2A是两个非常有用的宏,可以用于实现char*和wchar_t*字符串之间的转换.宏的实现也将会在测试代码中给出,不感兴趣的直接跳

C++中的字符(串)指针

(一)char       wchar_t(WCHAR)       TCHAR ANSI:char是8位ANSI字符的数据类型,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数. UNICODE:wchar_t是16位Unicode字符的数据类型,可用字符串处理函数:wcscat(),wcscpy(),wcslen()等以wcs打头的函数.它实际定义在里:typedef unsigned short wchar_t.在头文件中有这样的定义:t

CString char BSTR 转换

转自:http://www.cnblogs.com/lingyun1120/archive/2011/11/03/2234169.html 一.CString, int, string, char*之间的转换 string 转 CStringCString.Format("%s", string.c_str());char 转 CString  CString.Format("%s", char*);char 转 string  string s(char *);s

从char/wchar_t到TCHAR .

原文:http://blog.csdn.net/phunxm/article/details/5082618 一.ANSI和UNICODE 1.为什么要使用UNICODE?  (1) 可以很容易地在不同语言之间进行数据交换. (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件. (3) 提高应用程序的运行效率. Windows 2000是使用UNICODE从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成UNICODE,

cad.net 利用win32api实现一个命令开关参照面板

首先cad的参照面板很奇葩,如果直接发送 Externalreferencesclose 无论是否有面板,他都会闪烁一下,所以我要判断是否已经打开了参照面板. 然而cad自己没有相关的系统变量.这时我就需要利用到win32api来判断程序是否打开了参照面板了. 首先学习的是 https://blog.csdn.net/bcbobo21cn/article/details/50930221 这篇文章很好的说明了c#如何调用win32api,以及大家可能遇到的各种问题. 我来存一下: Win32 A

LPSTR、LPCSTR、LPTSTR、LPCTSTR、LPWSTR及LPCWSTR的意义及区别

引用 LPSTR.LPCSTR.LPTSTR.LPCTSTR.LPWSTR及LPCWSTR的意义及区别 1.ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式.ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节. 2.Unicode:用两个字节表示一个字符的编码方式.比如字符'A'在ASCII下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用“0”填充:函数'程'在ASCII下面用两个字节表示,而在Unicode下面也是用两个字节表

LPSTR、LPCSTR、LPWSTR、LPCWSTR、LPTSTR、LPCTSTR的来源及意义

1. Unicode字符集: 它是用两个字节表示一个字符的方法.比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节.UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义. 2. MCBS字符集: 即多字节字符集,它是不定长表示世界文字的编码.MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但

LPTSTR、LPCSTR、LPCTSTR、LPSTR

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