LPCTSTR,LPWSTR, PTSTR, LPTSTR,wchar_t区别

L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP与P是等效的。

P表示这是一个指针。

T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。

STR表示这个变量是一个字符串。

C表示是一个常量,const。

LPTSTR:

如果定义了UNICODE宏则LPTSTR被定义为LPWSTR。typedef LPTSTR LPWSTR;

否则LPTSTR被定义为LPSTR。 typedef LPTSTR LPSTR;

下面列出一些常用的typedefs:

类型   MBCS           Unicode

WCHAR wchar_t         wchar_t

LPSTR   char*           char*

LPCSTR const char*    const char*

LPWSTR wchar_t*        wchar_t*

LPCWSTR const wchar_t* const wchar_t*

TCHAR    char           wchar_t

LPTSTR TCHAR*(或char*)    TCHAR* (或wchar_t*)

LPCTSTR const TCHAR*     const TCHAR*

由于Win32 API文档的函数列表使用函数的常用名字(例如, SetWindowText"),所有的字符串都是用TCHAR来定义的。(除了XP中引入的只适用于Unicode的API)。所以结论,在VS2005系统中,为提高可移植性,定义字符串时用TCHAR,转化为UNICODE时用_T而不用L。

char:ANSI字符串,可用字符串处理函数strcat( ),strcpy( ), strlen(

)等以str打头的函数。

wchar_t :wchar_t是Unicode字符的数据类型,它的实际定义为:typedef

unsigned short wchar_t;

wchar_t 可用字符串处理函数:wcscat(),wcscpy(),wcslen()等以wcs打头

的函数。

WCHAR:在头文件中有这样的定义:typedef wchar_t WCHAR; 所以WCHAR实

际就是wchar_t。

在C语言里面提供了 _UNICODE宏(有下划线),在Windows里面提供了

UNICODE宏(无下划线),只要定了_UNICODE宏和UNICODE宏,系统就会自

动切换到UNICODE版本,否则,系统按照ANSI的方式进行编译和运行。只定

义了宏并不能实现自动的转换,他还需要一系列的字符定义支持。

TCHAR:

如果定义了UNICODE宏则TCHAR被定义为wchar_t。typedef wchar_t TCHAR;

否则TCHAR被定义为char typedef char TCHAR;

ACHAR:此类型是AUTODESK公司在adachar.h 头文件中定义的。

当定义了AD_UNICODE(AUTODESK公司使用UNICODE宏)时为wchar_t。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值