常用的字符类型转换

 

一. 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 }

 

posted @ 2014-11-30 23:07  MDGSF  阅读(258)  评论(0)    收藏  举报