CString 转换成TCHAR *的方法

方法一,使用强制转换。例如:

CString theString( "This is a test" );
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; 

  方法二,使用strcpy。例如:

CString theString( "This is a test" );
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString); 

  需要说明的是,strcpy(或可移值Unicode/MBCS的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* (ANSI),系统编译器将会自动对其进行转换。

  方法三,使用CString::GetBuffer。例如:

CString s(_T("This is a test "));
LPTSTR p = s.GetBuffer();
// 在这里添加使用p的代码
if(p != NULL) *p = _T('\0');
s.ReleaseBuffer(); 

// 使用完后及时释放,以便能使用其它的CString成员函数 


源码如下:

/**********
检查输入的手机型号是否合法。规定手机型号以CoolPad_开始。合法则返回TRUE,否则返回FALSE
***********/
BOOL CAutoBuildConfigDlg::CheckMobileName(CString strMobileName)
{
 wchar_t * pdest;
 CString strMobileName_temp;
 strMobileName_temp = strMobileName;
 TCHAR strCOOLPAD[] = L"COOLPAD_";

 LPTSTR lpsz =  new TCHAR[strMobileName_temp.GetLength()+1];
 wcsncpy_s(lpsz,(strMobileName_temp.GetLength()+1),strMobileName_temp, (strMobileName_temp.GetLength()+1));

 errno_t err;
 err = _wcsupr_s(lpsz,strMobileName_temp.GetLength()+1);//因为没有找到不区分大小写的查找子字符串的函数,所以决定转换成大写然后进行比较。
 pdest = wcsstr( lpsz,strCOOLPAD );

 if( pdest != NULL )
 {
   return TRUE;
 }
 else
 {
  return FALSE;
 }
}


你可能感兴趣的:(C语言)