实例:常用数据类型之间的相互转换

59 篇文章 11 订阅

常用的数据类型之间的相互转换,包括:intCStringdoubleCStringfloatCString

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);
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值