本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下。
1 #ifndef USE_H_ 2 #define USE_H_ 3 4 #include <iostream> 5 #include <windows.h> 6 #include <string> 7 using namespace std; 8 class CUser 9 { 10 public: 11 CUser(); 12 virtual~ CUser(); 13 char* WcharToChar(const wchar_t* wp); 14 char* StringToChar(const string& s); 15 char* WstringToChar(const wstring& ws); 16 wchar_t* CharToWchar(const char* c); 17 wchar_t* WstringToWchar(const wstring& ws); 18 wchar_t* StringToWchar(const string& s); 19 wstring StringToWstring(const string& s); 20 string WstringToString(const wstring& ws); 21 void Release(); 22 private: 23 char* m_char; 24 wchar_t* m_wchar; 25 }; 26 #endif;
1 #include "stdafx.h" 2 #include "use.h" 3 CUser::CUser() 4 :m_char(NULL) 5 ,m_wchar(NULL) 6 { 7 } 8 CUser::~CUser() 9 { 10 Release(); 11 } 12 char* CUser::WcharToChar(const wchar_t* wp) 13 { 14 Release(); 15 int len= WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),NULL,0,NULL,NULL); 16 m_char=new char[len+1]; 17 WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),m_char,len,NULL,NULL); 18 m_char[len]='