什么是 LPCTSTR?和 char* 有什么关系?
2010-10-29 ~ 2018-12-22
(3)
简单来说,LPCTSTR 就表示字符串指针。
那么和 char* 又有什么区别呢?
大家用 char 表示字符时,英文占用一个字节,中文站用两个字节。这样有一个严重的问题:两个字节,究竟是两个英文字符,还是一个中文字符?为了解决这个问题,unicode 编码诞生了。
常见的 unicode 编码不管中文英文都用两个字节表示,用 wchar_t 来定义。
为了让代码适应 char 和 wchar_t 两种情况,可以用 TCHAR 宏,这个宏当项目定义为 unicode 时表示 wchar_t,否则表示 char。
对应的,还有 _T("") 宏用来表示字符串,例如 _T("abc") 在项目为 unicode 时表示 L"abc",否则表示 "abc"。
然后再看 LPCTSTR,它是以下几个概念的缩写:Long Point Const Tchar STRing,这样意思就明确了吧。
以前不知道这概念走了不少弯路