String,CString,TCHAR,char间区别和联系以及相互转化 【转】
2010-04-21 09:44
507 查看
char*、TCHAR*转换CString CString str(****) 下面详细写一下其它转换 ////////////////////////////// /* *********************************************************************** * 函数: TransCStringToTCHAR * 描述:将CString 转换为 TCHAR* * 日期: *********************************************************************** */ TCHAR* CPublic::CString2TCHAR(CString &str) { int iLen = str.GetLength(); TCHAR* szRs = new TCHAR[iLen]; lstrcpy(szRs, str.GetBuffer(iLen)); str.ReleaseBuffer(); return szRs; } /* *********************************************************************** * 函数: THCAR2Char * 描述:将TCHAR* 转换为 char* * 日期: *********************************************************************** */ char* CPublic::THCAR2char(TCHAR* tchStr) { int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度 char* chRtn = new char[iLen+1] wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值 return chRtn; } /* *********************************************************************** * 函数: CString2char * 描述:将CString转换为 char* * 日期: *********************************************************************** */ char* CPublic::CString2char(CString &str) { int len = str.GetLength(); char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度 memset(chRtn, 0, 2*len+1); USES_CONVERSION; strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer())); return chRtn; } //参考 /////////////////////// //Pocket PC上的UNICODE和ANSI字符串 //By Vassili Philippov, September 26, 2001. //杨方思歧 译 //////////////////////// /* *********************************************************************** * 函 数 名:GetAnsiString * 描 述:将CString(unicode)转换为char*(ANSI) * 参 数:CString &s 要转换的CString * 返 回 值:返回转换结果 * 创建日期: * 最后修改: *********************************************************************** */ char* GetAnsiString(const CString &s) { int nSize = 2*s.GetLength(); char *pAnsiString = new char[nSize+1]; wcstombs(pAnsiString, s, nSize+1); return pAnsiString; } ////////////////////////////// |
/* 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 );
相关文章推荐
- String,CString,TCHAR,char间区别和联系以及相互转化
- String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR,char之间区别和联系(转)
- String,CString,TCHAR*,char*之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- (转载)String,CString,TCHAR*,char*之间区别和联系
- (转载)String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- 转 String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系