多字符集与宽字符集的互相转换

以你之姓@ 2022-03-11 05:38 241阅读 0赞

闲懒的可以直接下载我做的公共类 https://download.csdn.net/download/qq_37059136/11004128

这里要使用的主要是MultiByteToWideChar和WideCharToMultiByte

头文件定义一个类

  1. class CCBW
  2. {
  3. public:
  4. //多字节转宽字节
  5. int CharToWideChar(char * cInput,WCHAR * &wcOutput); //实现
  6. //宽字节转多字节
  7. int WideCharToChar(WCHAR * wcInput,char *&cOutput); //实现
  8. //释放空间
  9. int Delete(WCHAR * &p); //实现
  10. int Delete(char * &p); //实现
  11. protected:
  12. private:
  13. };

源文件实现

  1. /*******************************************************************************
  2. 函数名称:CharToWideChar
  3. 函数说明:将CHAR转为WCHAR
  4. 输入参数:
  5. char * cInput :输入的CHAR*字符串
  6. WCHAR * &wcOutput :输出的WCHAR*字符串
  7. 输出参数:
  8. 返 回 值:int
  9. 作 者:lijilei
  10. 修改日期:2018-11-22
  11. 修改说明:基础版本
  12. *******************************************************************************/
  13. int CCBW::CharToWideChar(char * cInput,WCHAR * &wcOutput)
  14. {
  15. int iUnicode = MultiByteToWideChar(CP_ACP, 0, cInput, strlen(cInput), NULL, 0);
  16. wcOutput = new WCHAR[iUnicode + 2];
  17. if (wcOutput)
  18. {
  19. ZeroMemory(wcOutput, iUnicode + 2);
  20. }
  21. MultiByteToWideChar(CP_ACP, 0, cInput, strlen(cInput), wcOutput, iUnicode);
  22. wcOutput[iUnicode] = '\0';
  23. wcOutput[iUnicode+1] = '\0';
  24. return TRUE;
  25. }
  26. /*******************************************************************************
  27. 函数名称:CharToWideChar
  28. 函数说明:将CHAR转为WCHAR
  29. 输入参数:
  30. WCHAR * wcInput :输入的WCHAR*字符串
  31. char * &cOutput :输入的CHAR*字符串
  32. 输出参数:
  33. 返 回 值:int
  34. 作 者:lijilei
  35. 修改日期:2018-11-22
  36. 修改说明:基础版本
  37. *******************************************************************************/
  38. int CCBW::WideCharToChar(WCHAR *wcInput, char *&cOutput)
  39. {
  40. int len = wcslen(wcInput);
  41. int ichar = WideCharToMultiByte(CP_ACP,0,wcInput,len,NULL,0,NULL,NULL);
  42. cOutput = new char[ichar + 1];
  43. if (cOutput)
  44. {
  45. ZeroMemory(cOutput,ichar+1);
  46. }
  47. WideCharToMultiByte(CP_ACP,0,wcInput,len,cOutput,ichar,NULL,NULL);
  48. cOutput[ichar] = '\0';
  49. return TRUE;
  50. }
  51. /*******************************************************************************
  52. 函数名称:Delete
  53. 函数说明:释放指针
  54. 输入参数:
  55. WCHAR * &p :待释放空间的指针的引用
  56. 输出参数:
  57. 返 回 值:int
  58. 作 者:lijilei
  59. 修改日期:2018-11-22
  60. 修改说明:基础版本
  61. *******************************************************************************/
  62. int CCBW::Delete(WCHAR * &p)
  63. {
  64. if (p)
  65. {
  66. delete p;
  67. p = NULL;
  68. }
  69. return TRUE;
  70. }
  71. /*******************************************************************************
  72. 函数名称:Delete
  73. 函数说明:释放指针
  74. 输入参数:
  75. WCHAR * &p :待释放空间的指针的引用
  76. 输出参数:
  77. 返 回 值:int
  78. 作 者:lijilei
  79. 修改日期:2018-11-22
  80. 修改说明:基础版本
  81. *******************************************************************************/
  82. int CCBW::Delete(char * &p)
  83. {
  84. if (p)
  85. {
  86. delete p;
  87. p = NULL;
  88. }
  89. return TRUE;
  90. }

发表评论

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

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

相关阅读