String,CString,TCHAR,char间区别和联系以及相互转化 【转】
来源:互联网 发布:ubuntu 中启动网络服务 编辑:程序博客网 时间:2024/05/02 01:46
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;
}
//////////////////////////////
PS:下面是网上搜集的LPTSTR 和CString的相互转换。
/* 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*之间区别和联系
- The function return
- 在eclipse上装python的步骤!一定要记得!对于初学者来说很有用!
- DELPHI 的ORM
- SP5368+GC0309调试
- Vmware+redhat9 的问题:could not open virtual machine
- String,CString,TCHAR,char间区别和联系以及相互转化 【转】
- windows上安装VIM插件DrawIt!
- C++中的const和mutable
- web验证用户登录状态
- 模式对话框与非模式对话框的创建方法
- 很高兴来CSDN博客唠叨唠叨
- MemberShip加密处理方式
- 手打原xml笔记手抄本
- 时间与时区相关函数