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

秒速五厘米 2022-08-24 11:55 267阅读 0赞

常用的数据类型之间的相互转换,包括:int与CString,double与CString,float与CString,

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

  1. //int to CString
  2. CString CMFCDataType::IntConvertCString(const int i)
  3. {
  4. CString strTemp;
  5. strTemp.Format(_T("%d"), i);
  6. return strTemp;
  7. }
  8. //CString to int
  9. int CMFCDataType::CStringConvertInt(const CString str)
  10. {
  11. int itemp = _wtoi(str);
  12. return itemp;
  13. }
  14. //float to CString
  15. CString CMFCDataType::FloatConvertCString(const float f)
  16. {
  17. CString strTemp;
  18. strTemp.Format(_T("%f"), f);
  19. return strTemp;
  20. }
  21. //CString to float
  22. float CMFCDataType::CStringConvertFloat(CString str)
  23. {
  24. float ftemp = _wtof(str);
  25. return ftemp;
  26. }
  27. //double to CString
  28. CString CMFCDataType::DoubleConvertCString(const double d)
  29. {
  30. CString strTemp;
  31. strTemp.Format(_T("%f"), d);
  32. return strTemp;
  33. }
  34. //CString to double
  35. double CMFCDataType::CStringConvertDouble(const CString str)
  36. {
  37. double dtemp = _wtol(str);
  38. return dtemp;
  39. }
  40. //char* to CString
  41. CString CMFCDataType::LPSTRConvertCString(const char* ch)
  42. {
  43. CString strTemp;
  44. strTemp.Format(_T("%s"), ch);
  45. return strTemp;
  46. }
  47. //CString to char*
  48. char* CMFCDataType::CStringConvertLPSTR(const CString str)
  49. {
  50. //将CString类转换成char*(LPSTR)类型
  51. 方法1 强制转换
  52. //LPSTR lpsz =(LPSTR)(LPCTSTR)str;
  53. //return lpsz;
  54. //方法二 使用strcpy
  55. LPTSTR lpsz = new TCHAR[str.GetLength()+1];
  56. _tcscpy(lpsz, str);
  57. LPSTR lpst=(LPSTR)lpsz;
  58. return lpst;
  59. }
  60. //string to CString
  61. CString CMFCDataType::StringConvertCString(const std::string str)
  62. {
  63. CString strTemp;
  64. strTemp = str.c_str();
  65. return strTemp;
  66. }

示例:

  1. std::string CMFCDataType::CStringConvertstring(CString str)
  2. {
  3. //Method One
  4. std::string strstring = CT2A(str.GetBuffer());
  5. //GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
  6. str.ReleaseBuffer();
  7. return strstring;
  8. Method Two
  9. //std::string strstring( CW2A( str.GetString() ) );
  10. //return strstring;
  11. Method Three
  12. //CT2CA pszstrtemp(str);
  13. //std::string strstring(pszstrtemp);
  14. //return strstring;
  15. Method Four
  16. //std::wstring ws(str);
  17. //std::string strstring;
  18. //strstring.assign(ws.begin(), ws.end());
  19. //return strstring;
  20. }
  21. //char to std::string
  22. std::string CMFCDataType::CharConvertstring(const char str)
  23. {
  24. std::string stringtemp(&str);
  25. return stringtemp;
  26. }
  27. //std::string to char
  28. const char* CMFCDataType::StringConvertchar(const std::string str)
  29. {
  30. //方法一
  31. const char* chtemp1 = str.c_str();
  32. //方法二
  33. const char* chtemp2 = str.data();
  34. /*printf("%s%s",chtemp1,chtemp2);*/
  35. return chtemp1;
  36. }
  37. //WCHAR*(BSTR) to CString
  38. CString CMFCDataType::BSTRConvertCString(const WCHAR* wch)
  39. {
  40. //BSTR bstrText = ::SysAllocString(L"Test");
  41. CString str;
  42. str.Empty();
  43. str = wch;
  44. //或
  45. //CString str(wch);
  46. return str;
  47. }
  48. //CString to WCHAR*(BSTR)
  49. WCHAR* CMFCDataType::CStringConvertBSTR(const CString str)
  50. {
  51. return str.AllocSysString();
  52. //BSTR bstrText = str.AllocSysString();
  53. //SysFreeString(bstrText); // 用完释放
  54. }
  55. //WCHAR*(BSTR) to char*(LPSTR)
  56. /*char**/LPSTR CMFCDataType::BSTRConvertLPSTR(const WCHAR* wch)
  57. {
  58. _bstr_t btemp = wch;
  59. char* lpsz = btemp;
  60. return lpsz;
  61. }
  62. //char*(LPSTR) to WCHAR*(BSTR)
  63. WCHAR* CMFCDataType::LPSTRConvertBSTR(const char* ch)
  64. {
  65. BSTR bstr = _bstr_t(ch);
  66. return bstr;
  67. }
  68. 引用示例:
  69. void CDataTypeConversionDlg::OnBnClickedBtnConvert()
  70. {
  71. //int 转 CString
  72. /*int i= 20;
  73. CString str=m_CMFCDataType.IntConvertCString(i);
  74. int t= str.GetLength();*/
  75. //CString 转 int
  76. /*CString str1=_T("30");
  77. int t=m_CMFCDataType.CStringConvertInt(str1);*///t==30
  78. float CString
  79. //float f= 20.5;
  80. //CString str=m_CMFCDataType.FloatConvertCString(f);
  81. double CString
  82. /*double d= 20.025;
  83. CString str=m_CMFCDataType.DoubleConvertCString(d);*/
  84. //CString 转 float
  85. //CString str1=_T("30.27");
  86. //float ftemp=m_CMFCDataType.CStringConvertFloat(str1);//t==30.270000
  87. CString double
  88. //CString str1=_T("30.27458");
  89. //double dtemp=m_CMFCDataType.CStringConvertDouble(str1);//t==
  90. //CString str1=_T("");
  91. //int t=m_CMFCDataType.CStringConvertInt(str1);//t==0
  92. /*CString strTemp;
  93. std::string str("sadfg");
  94. strTemp = m_CMFCDataType.StringConvertCString(str);
  95. MessageBox(strTemp);*/
  96. /*CString strTemp=_T("asdfg");
  97. std::string str;
  98. str = m_CMFCDataType.CStringConvertstring(strTemp);*/
  99. /*char ch = 'abcd';
  100. char* c1 = &ch;
  101. CString str=m_CMFCDataType.LPSTRConvertCString(c1);
  102. delete c1;*/
  103. //char ch= 'abcd';
  104. //std::string s=m_CMFCDataType.CharConvertstring(ch);//s='d'
  105. //char ch= 'b';
  106. //std::string s=m_CMFCDataType.CharConvertstring(ch);//s='b'
  107. //std::string str("sadfg");
  108. //const char* chtemp1=m_CMFCDataType.StringConvertchar(str);
  109. //char str2[20];
  110. //strcpy(str2,chtemp1);
  111. //printf("%s,\n",str);//str 为stdfg
  112. //2014-04-29
  113. //char*转换为CString
  114. //定义一个字符串数组 方式 5种
  115. //char chArray[] = "This is a test";
  116. //char * p1 = "This is a test";
  117. //LPSTR p2 = "This is a test";
  118. //或在已定义Unicode应的用程序中
  119. //TCHAR * p3 = _T("This is a test");
  120. //或
  121. //LPTSTR p4 = _T("This is a test");
  122. BSTRConvertCString
  123. //BSTR bstrText = ::SysAllocString(L"Test");
  124. //CString strtemp=m_CMFCDataType.BSTRConvertCString(bstrText);//strtemp='Test'
  125. CStringConvertBSTR
  126. //CString strtemp=_T("saddsf");
  127. //BSTR bstrText = m_CMFCDataType.CStringConvertBSTR(strtemp);
  128. BSTRConvertCString
  129. //BSTR bstrText = ::SysAllocString(L"Test");
  130. //LPSTR chtemp=m_CMFCDataType.BSTRConvertLPSTR(bstrText);//strtemp='Test'
  131. //CString str;
  132. //str.Format(_T("%s"),chtemp);
  133. LPSTRConvertBSTR
  134. //char* ch="asdd";
  135. //BSTR bstrText = m_CMFCDataType.LPSTRConvertBSTR(ch);
  136. }

发表评论

表情:
评论列表 (有 0 条评论,267人围观)

还没有评论,来说两句吧...

相关阅读