发布网友 发布时间:2024-10-12 19:14
共1个回答
热心网友 时间:2024-10-25 20:25
LPTSTR在编程中扮演着重要角色,它与char*类似,代表普通字符或字符串变量,实际上是一个指向字符或字符串的指针。
LP,即长指针,是在Win32环境中,通过_T宏来识别字符编码。如果程序支持Unicode,LPTSTR指向的字符串采用两字节表示每个字符,为Unicode字符串;否则,就是标准的单字节ANSI字符串。
STR后缀表示该变量是字符串类型。以下是如何在C++中进行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,有以下方法:
CString strText( _T("This is a test") ); LPTSTR lpszText = (LPTSTR)(LPCTSTR)strText; ::MessageBox(NULL, lpszText, _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK);
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);
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,示例如下:
CString theString = chArray; theString.Format(_T("%s"), chArray); theString = p;
CString s(_T("Char test ")); LPTSTR p = s.GetBuffer(); LPTSTR dot = strchr(p, ''.'); //...在这里处理p; s.ReleaseBuffer();
以上展示了LPTSTR和CString之间的转换和操作方法。