常用的字符类型转换
一. int 类型 --> char * 类型
1 int iComi=1; 2 char acCom[50] = {0}; 3 char acComi[50] = {0}; 4 sprintf(acComi, "%d", iComi); 5 strcpy(acCom, "COM"); 6 strcat(acCom, acComi); 7 printf(" acCom : %s \n", acCom); 8 cout<<endl;
二. wchar_t 类型 --> char * 类型
1 wchar_t awcTemp2[50] = L"wchar to char[]"; 2 int iNumTemp2 = WideCharToMultiByte(CP_OEMCP, NULL, awcTemp2, -1, NULL, 0, NULL, FALSE); 3 char * pcTemp2 = new char[iNumTemp2]; 4 WideCharToMultiByte(CP_OEMCP, NULL, awcTemp2, -1, pcTemp2, iNumTemp2, NULL, FALSE); 5 wcout<<" awcTemp2 : "<<awcTemp2<<endl; 6 cout<<" pcTemp2 : "<<pcTemp2<<endl;
三. char * 类型 --> wchar_t * 类型
1 void 2 m_vChar2Wchar(char * pc, wchar_t * pwc) 3 { 4 int iNumTemp = MultiByteToWideChar(CP_ACP, 0, pc, -1, NULL, 0); 5 MultiByteToWideChar(CP_ACP, 0, pc, -1, pwc, iNumTemp); 6 }
四. char * 类型 --> string 类型
1 char * pcTemp3 = "XiaMen"; 2 string strTemp3 = pcTemp3; 3 cout<<" strTemp3 : "<<strTemp3<<endl; 4 printf(" strTemp3 : %s \n", strTemp3); 5 printf(" strTemp3 : %s \n", strTemp3.c_str()); 6 cout<<endl;
五. char * 类型 --> TCHAR * 类型
1 void 2 m_vChar2Tchar(char * pcSour, TCHAR * ptcDes) 3 { 4 int iLen = strlen(pc); 5 TCHAR *chRtn = new TCHAR[iLen+1]; 6 mbstowcs(chRtn, pc, iLen+1); 7 ptcDes = chRtn; 8 }
六. string-->char[]-->BSTR-->VARIANT
1 string strTemp7 = "xingx"; 2 char acTemp7[50]; 3 strcpy(acTemp7, strTemp7.c_str()); 4 BSTR bstrTemp7 = _bstr_t( acTemp7 ); 5 VARIANT varParam7; 6 varParam7.vt = VT_BSTR; 7 varParam7.bstrVal = bstrTemp7; 8 cout<<" bstrTemp7 : "<<bstrTemp7<<endl; 9 wprintf(L" bstrTemp7 : %s \n", bstrTemp7); 10 cout<<endl;
七. VARIANT --> CString
1 void 2 m_vVARIANT2Cstr(VARIANT& rvarSource, CString& rcstrDes) 3 { 4 char acTemp[50] = {0}; 5 LPCTSTR lpc = OLE2T(rvarSource.bstrVal); 6 WideCharToMultiByte(CP_ACP, 0, lpc, -1, acTemp, 50, NULL, NULL); 7 8 rcstrDes.Format( _T("%s"), lpc); 9 CStringA cstraTemp(rcstrDes.GetBuffer(0)); 10 rcstrDes.ReleaseBuffer(); 11 }
八. VARIANT --> string
1 void 2 m_vVARIANT2string(VARIANT& rvarSource, string& rstrDes, CString& rcstrDes) 3 { 4 char acTemp[50]; 5 LPCTSTR lpc = OLE2T(rvarSource.bstrVal); 6 WideCharToMultiByte(CP_ACP, 0, lpc, -1, acTemp, 50, NULL, NULL); 7 rcstrDes.Format( _T("%s"), lpc); 8 CStringA cstraTemp(rcstrDes.GetBuffer(0)); 9 rcstrDes.ReleaseBuffer(); 10 rstrDes = cstraTemp.GetBuffer(0); 11 cstraTemp.ReleaseBuffer(); 12 if(rstrDes == "(null)") 13 { 14 rstrDes = ""; 15 } 16 }
九. VARIANT --> char *
void m_vVARIANT2Char(VARIANT& rvarSource, char * pcDes) { char acTemp[50]={0}; LPCTSTR lpc = OLE2T(rvarSource.bstrVal); WideCharToMultiByte(CP_ACP, 0, lpc, -1, acTemp, 50, NULL, NULL); strcpy(pcDes, acTemp); }
十. int --> string
1 void 2 m_vInt2String(const int iNumSour, string & rstrDes) 3 { 4 std::stringstream newstr; 5 newstr<<iNum; 6 rstrDes = newstr.str(); 7 }
十一. CString --> string
1 void 2 m_vCString2String(CString& rcstrSour, string& rstrDes) 3 { 4 CStringA cstraTemp(rcstrSour.GetBuffer(0)); 5 rcstrSour.ReleaseBuffer(); 6 rstrDes = cstraTemp.GetBuffer(0); 7 cstraTemp.ReleaseBuffer(); 8 }
十二. string--->TCHAR
1 std::string str="something"; 2 TCHAR *param=new TCHAR[str.size()+1]; 3 param[str.size()]=0; 4 //As much as we'd love to, we can't use memcpy() because 5 //sizeof(TCHAR)==sizeof(char) may not be true: 6 std::copy(str.begin(),str.end(),param);
十三. string--->char *
1 char* c=new char[20]; 2 string s="1234"; 3 //c = s.c_str(); 4 strcpy(c,s.c_str()); 5 cout<<c<<endl; //输出:1234 6 s="abcd"; 7 cout<<c<<endl; //输出:1234
1 string strTemp2 = "xiamen"; 2 int iLength = strTemp2.length(); 3 char * pcData = (char *)malloc((iLength+1)*sizeof(char)); 4 strTemp2.copy(pcData, iLength, 0); 5 pcData[iLength]='\0'; 6 cout<<" pcData : "<<pcData<<endl; 7 free(pcData); 8 pcData = NULL; 9 cout<<endl;
十四. string ---> wchar *
1 void 2 m_vString2Wchar(const string& rstrSour, wchar_t * pwcDes) 3 { 4 char acRes[200]={0}; 5 strcpy(acRes, rstrSour.c_str()); 6 int iNumTemp = MultiByteToWideChar(CP_ACP, 0, acRes, -1, NULL, 0); 7 wchar_t * pwcTemp = new wchar_t[iNumTemp]; 8 MultiByteToWideChar(CP_ACP, 0, acRes, -1, pwcTemp, iNumTemp); 9 wcsncpy(pwcDes, pwcTemp, iNumTemp); 10 delete pwcTemp; 11 }
My Github Blog: mdgsf.github.io

浙公网安备 33010602011771号