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

来源:互联网 发布:海康门禁软件 编辑:程序博客网 时间:2024/05/17 02:24

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

char* CString ,string CString ,char string ,WCHAR*(BSTR) 与CString,WCHAR*(BSTR) 与char* 

//int to CStringCString CMFCDataType::IntConvertCString(const int i){CString strTemp;strTemp.Format(_T("%d"), i);return strTemp;} //CString to intint CMFCDataType::CStringConvertInt(const CString str){int itemp = _wtoi(str);return itemp;} //float to CStringCString CMFCDataType::FloatConvertCString(const float f){CString strTemp;strTemp.Format(_T("%f"), f);return strTemp;} //CString to floatfloat CMFCDataType::CStringConvertFloat(CString str){ float ftemp = _wtof(str);return ftemp;} //double to CStringCString CMFCDataType::DoubleConvertCString(const double d){CString strTemp;strTemp.Format(_T("%f"), d);return strTemp;} //CString to doubledouble CMFCDataType::CStringConvertDouble(const CString str){double  dtemp = _wtol(str);return dtemp;} //char* to CStringCString 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; //方法二 使用strcpyLPTSTR lpsz = new TCHAR[str.GetLength()+1];_tcscpy(lpsz, str);LPSTR lpst=(LPSTR)lpsz;return lpst; } //string to CStringCString CMFCDataType::StringConvertCString(const std::string str){CString strTemp;strTemp = str.c_str();return strTemp;}

示例:

std::string CMFCDataType::CStringConvertstring(CString str){//Method Onestd::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::stringstd::string CMFCDataType::CharConvertstring(const char str){std::string stringtemp(&str);return stringtemp;} //std::string to charconst 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 CStringCString 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 0
原创粉丝点击