什么区别LPCSTR
,LPCTSTR
和LPTSTR
?
为什么我们需要这样做才能将字符串转换为LV
/ _ITEM
structure变量pszText
:
LV_DISPINFO dispinfo; dispinfo.item.pszText = LPTSTR((LPCTSTR)string);
John Sibly.. 113
回答你问题的第一部分:
LPCSTR
是一个const字符串
LPCTSTR
是一个const TCHAR
字符串,(TCHAR
根据是否在项目中定义了UNICODE,可以是宽字符或char)
LPTSTR
是(非const)TCHAR
字符串
这是一篇很棒的代码项目文章,描述了C++字符串(参见2/3,比较不同类型的图表的方式)
回答你问题的第一部分:
LPCSTR
是一个const字符串
LPCTSTR
是一个const TCHAR
字符串,(TCHAR
根据是否在项目中定义了UNICODE,可以是宽字符或char)
LPTSTR
是(非const)TCHAR
字符串
这是一篇很棒的代码项目文章,描述了C++字符串(参见2/3,比较不同类型的图表的方式)
又快又脏:
LP
== L ong P ointer.想想指针或字符*
C
= C onst,在这种情况下,我认为它们意味着字符串是const,而不是指针是const.
STR
是字符串
的T
是用于根据编译选项宽字符或字符(TCHAR).
char
:8位字符 - 基础C/C++数据类型
CHAR
:别名char
- Windows数据类型
LPSTR
:以null结尾的字符串CHAR
(L ong P ointer)
LPCSTR
:常量以null结尾的字符串CHAR
(L ong P ointer)
wchar_t
:16位字符 - 基础C/C++数据类型
WCHAR
:别名wchar_t
- Windows数据类型
LPWSTR
:以null结尾的字符串WCHAR
(L ong P ointer)
LPCWSTR
:常量以null结尾的字符串WCHAR
(L ong P ointer)
UNICODE
定义
TCHAR
:WCHAR
如果定义了UNICODE的别名; 除此以外CHAR
LPTSTR
:以null结尾的字符串TCHAR
(L ong P ointer)
LPCTSTR
:常量以null结尾的字符串TCHAR
(L ong P ointer)
所以
| Item | 8-bit | 16-bit | Varies | |-------------------|--------------|-------------|-----------------| | character | CHAR | WCHAR | TCHAR | | string | LPSTR | LPWSTR | LPTSTR | | string (const) | LPCSTR | LPCWSTR | LPCTSTR |
TCHAR
→ 文字字符 (archive.is)