实例:常用数据类型之间的相互转换
常用的数据类型之间的相互转换,包括:int与CString,double与CString,float与CString,
char* 与CString ,string 与CString ,char 与string ,WCHAR*(BSTR) 与CString,WCHAR*(BSTR) 与char*
//int to CString
CString CMFCDataType::IntConvertCString(const int i)
{
CString strTemp;
strTemp.Format(_T("%d"), i);
return strTemp;
}
//CString to int
int CMFCDataType::CStringConvertInt(const CString str)
{
int itemp = _wtoi(str);
return itemp;
}
//float to CString
CString CMFCDataType::FloatConvertCString(const float f)
{
CString strTemp;
strTemp.Format(_T("%f"), f);
return strTemp;
}
//CString to float
float CMFCDataType::CStringConvertFloat(CString str)
{
float ftemp = _wtof(str);
return ftemp;
}
//double to CString
CString CMFCDataType::DoubleConvertCString(const double d)
{
CString strTemp;
strTemp.Format(_T("%f"), d);
return strTemp;
}
//CString to double
double CMFCDataType::CStringConvertDouble(const CString str)
{
double dtemp = _wtol(str);
return dtemp;
}
//char* to CString
CString CMFCDataType::LPSTRConvertCString(const char* ch)
{
CString strTemp;
strTemp.Format(_T("%s"), ch);
return strTemp;
}
//CString to char*
char* CMFCDataType::CStringConvertLPSTR(const CString str)
{
//将CString类转换成char*(LPSTR)类型
方法1 强制转换
//LPSTR lpsz =(LPSTR)(LPCTSTR)str;
//return lpsz;
//方法二 使用strcpy
LPTSTR lpsz = new TCHAR[str.GetLength()+1];
_tcscpy(lpsz, str);
LPSTR lpst=(LPSTR)lpsz;
return lpst;
}
//string to CString
CString CMFCDataType::StringConvertCString(const std::string str)
{
CString strTemp;
strTemp = str.c_str();
return strTemp;
}
示例:
std::string CMFCDataType::CStringConvertstring(CString str)
{
//Method One
std::string strstring = CT2A(str.GetBuffer());
//GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
str.ReleaseBuffer();
return strstring;
Method Two
//std::string strstring( CW2A( str.GetString() ) );
//return strstring;
Method Three
//CT2CA pszstrtemp(str);
//std::string strstring(pszstrtemp);
//return strstring;
Method Four
//std::wstring ws(str);
//std::string strstring;
//strstring.assign(ws.begin(), ws.end());
//return strstring;
}
//char to std::string
std::string CMFCDataType::CharConvertstring(const char str)
{
std::string stringtemp(&str);
return stringtemp;
}
//std::string to char
const char* CMFCDataType::StringConvertchar(const std::string str)
{
//方法一
const char* chtemp1 = str.c_str();
//方法二
const char* chtemp2 = str.data();
/*printf("%s%s",chtemp1,chtemp2);*/
return chtemp1;
}
//WCHAR*(BSTR) to CString
CString CMFCDataType::BSTRConvertCString(const WCHAR* wch)
{
//BSTR bstrText = ::SysAllocString(L"Test");
CString str;
str.Empty();
str = wch;
//或
//CString str(wch);
return str;
}
//CString to WCHAR*(BSTR)
WCHAR* CMFCDataType::CStringConvertBSTR(const CString str)
{
return str.AllocSysString();
//BSTR bstrText = str.AllocSysString();
//SysFreeString(bstrText); // 用完释放
}
//WCHAR*(BSTR) to char*(LPSTR)
/*char**/LPSTR CMFCDataType::BSTRConvertLPSTR(const WCHAR* wch)
{
_bstr_t btemp = wch;
char* lpsz = btemp;
return lpsz;
}
//char*(LPSTR) to WCHAR*(BSTR)
WCHAR* CMFCDataType::LPSTRConvertBSTR(const char* ch)
{
BSTR bstr = _bstr_t(ch);
return bstr;
}
引用示例:
void CDataTypeConversionDlg::OnBnClickedBtnConvert()
{
//int 转 CString
/*int i= 20;
CString str=m_CMFCDataType.IntConvertCString(i);
int t= str.GetLength();*/
//CString 转 int
/*CString str1=_T("30");
int t=m_CMFCDataType.CStringConvertInt(str1);*///t==30
float 转 CString
//float f= 20.5;
//CString str=m_CMFCDataType.FloatConvertCString(f);
double 转 CString
/*double d= 20.025;
CString str=m_CMFCDataType.DoubleConvertCString(d);*/
//CString 转 float
//CString str1=_T("30.27");
//float ftemp=m_CMFCDataType.CStringConvertFloat(str1);//t==30.270000
CString 转 double
//CString str1=_T("30.27458");
//double dtemp=m_CMFCDataType.CStringConvertDouble(str1);//t==
//CString str1=_T("");
//int t=m_CMFCDataType.CStringConvertInt(str1);//t==0
/*CString strTemp;
std::string str("sadfg");
strTemp = m_CMFCDataType.StringConvertCString(str);
MessageBox(strTemp);*/
/*CString strTemp=_T("asdfg");
std::string str;
str = m_CMFCDataType.CStringConvertstring(strTemp);*/
/*char ch = 'abcd';
char* c1 = &ch;
CString str=m_CMFCDataType.LPSTRConvertCString(c1);
delete c1;*/
//char ch= 'abcd';
//std::string s=m_CMFCDataType.CharConvertstring(ch);//s='d'
//char ch= 'b';
//std::string s=m_CMFCDataType.CharConvertstring(ch);//s='b'
//std::string str("sadfg");
//const char* chtemp1=m_CMFCDataType.StringConvertchar(str);
//char str2[20];
//strcpy(str2,chtemp1);
//printf("%s,\n",str);//str 为stdfg
//2014-04-29
//char*转换为CString
//定义一个字符串数组 方式 5种
//char chArray[] = "This is a test";
//char * p1 = "This is a test";
//LPSTR p2 = "This is a test";
//或在已定义Unicode应的用程序中
//TCHAR * p3 = _T("This is a test");
//或
//LPTSTR p4 = _T("This is a test");
BSTRConvertCString
//BSTR bstrText = ::SysAllocString(L"Test");
//CString strtemp=m_CMFCDataType.BSTRConvertCString(bstrText);//strtemp='Test'
CStringConvertBSTR
//CString strtemp=_T("saddsf");
//BSTR bstrText = m_CMFCDataType.CStringConvertBSTR(strtemp);
BSTRConvertCString
//BSTR bstrText = ::SysAllocString(L"Test");
//LPSTR chtemp=m_CMFCDataType.BSTRConvertLPSTR(bstrText);//strtemp='Test'
//CString str;
//str.Format(_T("%s"),chtemp);
LPSTRConvertBSTR
//char* ch="asdd";
//BSTR bstrText = m_CMFCDataType.LPSTRConvertBSTR(ch);
}
还没有评论,来说两句吧...