您的位置首页百科问答

LPCTSTR是什么啊?

LPCTSTR是什么啊?

的有关信息介绍如下:

LPCTSTR是什么啊?

LPCTSTR是指向常量字符串的长指针,即(Long Pointer to ConsTant STRing)。CString类有一个操作符operator LPCTSTR ( ) const,可以用来转换的。假如有一个CString类型的变量str,在要使用LPCTSTR的地方这样转换就可以了LPCTSTR (str)。其实有些版本的编译器不需要转换就直接可以用的。

typedef const TCHAR* LPCTSTR;

而 TCHAR 宏会根据选择的项目字符集,自动展开为 wchar_t 或 char.

所以 LPCTSTR 其实就是 const char* 或 const wchar_t*。

LPCTSTR可以用CString代用的.

LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS.

比如列表控件 AddString(LPCTSTR lpszItem),

参数用CString可以的.

LPCTSTR类型:

L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。P表示这是一个指针。C表示是一个常量。T表示在Win32环境中, 有一个_T宏。STR表示这个变量是一个字符串。

LPCTSTR表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。同样,LPCSTR就只能是一个ANSI字符串,在程序中我们大部分时间要使用带T的类型定义。LPCTSTR == const TCHAR *CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换,没什么奇特的,最简单的C++操作符重载而已。常量字符串ansi和unicode的区分是由宏_T来决定的。但是用_T("abcd")时, 字符串"abcd"就会根据编译时的是否定一_UNICODE来决定是char* 还是 w_char*。 同样,TCHAR 也是相同目的字符宏。 看看定义就明白了。简单起见,下面只介绍 ansi 的情况,unicode 可以类推。

long point to const string