词条 | LPTSTR |
释义 | LPTSTR解释与char*等价,表示普通字符/字符串变量,指向字符/字符串的指针。 LP:长指针(long pointer)。 T:win32环境中有一个_T宏,用来标识字符是否采用Unicode编码(两字节表示一个字符),若程序中定义了Unicode,该字符/字符串被作为Unicode字符串,否则就是标准的ANSI(单字节表示一个字符)字符串。 STR:表示这个变量是一个字符串。 /* LPTSTR 转换成 CString */ (1)直接赋值 CString strText; LPTSTR lpszText = _T("LPTSTR >> CString"); strText = lpszText; ::MessageBox( NULL, strText , _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); (2)CString::Format()格式化 CString strText; LPTSTR lpszText = _T("LPTSTR >> CString"); strText.Format( _T("%s"), lpszText ); ::MessageBox( NULL, strText , _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); /* CString 转换成 LPTSTR */ (1)强制转换 CString strText( _T("This is a test") ); LPTSTR lpszText =(LPTSTR)(LPCTSTR)strText; ::MessageBox( NULL, lpszText, _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); (2)使用lstrcpy() CString strText( "This is a test" ); LPTSTR lpszText = new TCHAR[strText.GetLength()+1]; lstrcpy( lpszText, strText ); ::MessageBox( NULL, lpszText, _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); (3)使用CString::GetBuffer() CString strText(_T("This is a test ")); LPTSTR lpszText = strText.GetBuffer(); strText.ReleaseBuffer(); ::MessageBox( NULL, lpszText, _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); /* char * 转换成 CString char chArray[] = "This is a test"; char * p = "This is a test"; CString theString = chArray; theString.Format(_T("%s"), chArray); theString = p; /* CString转换成char* 1. CString theString( "This is a test" ); LPTSTR lpsz = new TCHAR[theString.GetLength()+1]; _tcscpy(lpsz, theString); 2. CString s(_T("Char test ")); LPTSTR p = s.GetBuffer(); LPTSTR dot = strchr(p, ''.''); // 在这里添加使用p的代码 if(p != NULL) *p = _T(''); s.ReleaseBuffer(); 关于c++中LPTSTRLPCTSTR,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。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。