您的位置:首页 > 编程语言 > C语言/C++

C++各种数据类型之间的转换

2016-04-24 18:19 579 查看
在笔者在做windows开发的初期,各种数据类型的转换着实让笔者头痛不已,一些函数只需要特定类型的形参,而我们“手头”的参数又是各种其他类型,着实egg疼:

在做了一段时间开发过后,笔者特此总结了以下数据类型间的转化(有不足之处希望大家指正):

                                               1.CString与TCHAR 相互转换


1.1 TCHAR转为CString

CString TCHARToCString(TChar *buf )

{

Cstring str;

Str.Format(L”%s”,buf);

return Str;

}


1.2 CString转为TCHAR数组

TCHAR* CStringToTCHAR(CString str)

{

TCHAR *buf;

_tcscpy(buf,str);

      return buf;

}


                                                    2. char与TCHAR 相互转换


2.1 char转为TCHAR

TChar*CharTOTchar1(char *szchar)

{

     TCHAR *wszBuff;

wcscpy(wszBuff,A2T((LPCSTR) szchar));

returnwszBuff;

}

 

TChar*CharTOTchar2(char *szchar)

{

DWORD dwsize = MultiByteToWideChar(CP_OEMCP, 0, szchar, -1,NULL, 0);

TCHAR * sztchar = new TCHAR[dwsize];

MultiByteToWideChar(CP_OEMCP, 0, szchar, -1, sztchar,dwsize);

}


2.2 TCHAR转为char

  

char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn)  

{  

LPSTR pszOut = NULL;  

if (lpwszStrIn != NULL)  

{  

int nInputStrLen = wcslen (lpwszStrIn);  

// Double NULL Termination  

int nOutputStrLen = WideCharToMultiByte (CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;  

pszOut = new char [nOutputStrLen];  

if (pszOut)  

{  

memset (pszOut, 0x00, nOutputStrLen);  

WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);  

}  

}  

return pszOut;  

}  

 


                                            3. CString与String 相互转换


3.1 CString转为string

std::string CStringToString(CString str)           

{

     CStringAstra(str.GetBuffer(0));         

     str.ReleaseBuffer();

     std::string strReturn=stra.GetBuffer(0);

     stra.ReleaseBuffer();

     return strReturn;

}


3.2 string转为CString

CStringStringToCString(std::string str) 

{

     CString strCString;

strCString= str.c_str();

returnstrCString;

}

     


                                              4.CString与int 相互转换


4.1 CString转为int

int  CStringToInt(CString str)

{

int b=_ttoi(str);

     return b;

}

 


4.2 int转为CString

//这个就简单了,很多类型转换成CString,都用CString.format这种方法

CStringIntToCString(int i)

{

     CString str;

     Str.format(L”%d”,i);

     return Str;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: