C++所有类型的定义

LPSTR和LPWSTRWin32VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的64位双字节字符数组指针。LPSTR是指指向一个字符串的32位指针,每个字符占1个字节。

类似于:(LPSTR 相当于CHAR *)

char chArray[] = “This is a test”;
    char * p = “This is a test”;
    或
    LPSTR p = “This is a test”;
LPCSTR 是Win32和VC++所使用的一种 字符 串数据类型。LPCSTR被定义成是一个指向以NULL(‘\0’)结尾的 常量 字符的 指针 LPCSTR是指指向一个常量字符串的32位指针,每个字符占1个字节。(它与LPSTR等同,但不能被其他API函数改变)

类似于:(LPCSTR 相当于CONST CHAR * )

const char* = "yuantianyou ";
    LPCSTR a = b;
LPTSTR:每字符可能占1字节或2字节,取决于Unicode是否定义,所有的 字符 串都是用TCHAR来定义的。UNICODE对应的指针是unsigned   short*也就是LPWSTR,为了写程序方便微软定义了类型LPTSTR。(当为Unicode时它与LPWSTR等同,当为ANSI时,它与LPSTR等同)。

类似于:(LPTSTR相等于unsigned short* /LPWSTR)

#ifdef _UNICODE的时候
    _T就是L
    没有#ifdef _UNICODE的时候
    _T就是ANSI的。
    比如
    LPTSTR lpStr = new TCHAR[32];
    TCHAR* szBuf = _T("Hello");
LPCTSTR: LPCTSTR是指“long pointer to a constant generic string”,表示“一个指向一般字符串常量的长指针类型”,与C/C++的const char*相映射,而LPTSTR映射为 char*。

TCHAR:当我们定义了UNICODE宏,就相当于告诉了编译器:我准备采用UNICODE版本。这个时候,TCHAR就会摇身一变,变成了wchar_t。

typedef wchar_t TCHAR;

否则,定义为ANSI版本。

typedef char TCHAR;
在MFC中,凡是用char的地方都可以用TCHAR取代,凡是用char*的地方都可以用LPTSTR来取代,凡是定义在双符号中的字符串常量(如“helloword”)都可用TEXT宏重写。

TEXT(“helloword”);

为支持Unicode做准备,除个别必须使用char或char*的地方外,其他地方请依照如下标准:

1.字符串类型尽量用CString    2.字符类型使用TCHAR    3.字符串数组使用THAR[]    4.字符串指针使用TCHAR* 或 LPTSTR    5.常量字符串指针使用const CHAR* 或LPCSTR    6.字符串常量和字符常量加宏 _T

特别的:

1》CString::Format(_T(" ...."),...)//要加_T

2》LPTSTR等等被多次嵌套定义过的宏尽量少用,用基础类型const  CHAR*代替。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值