国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

深入理解c++中char*與wchar_t*與string以及wstring之間的相互轉(zhuǎn)換

2019-11-06 08:15:52
字體:
供稿:網(wǎng)友
復(fù)制代碼 代碼如下:    #ifndef USE_H_      #define USE_H_      #include <iostream>      #include <windows.h>      #include <string>      using namespace std;      class CUser      {      public:          CUser();          virtual~ CUser();          char* WcharToChar(const wchar_t* wp);          char* StringToChar(const string& s);          char* WstringToChar(const wstring& ws);          wchar_t* CharToWchar(const char* c);          wchar_t* WstringToWchar(const wstring& ws);          wchar_t* StringToWchar(const string& s);          wstring StringToWstring(const string& s);          string WstringToString(const wstring& ws);          void Release();      PRivate:          char* m_char;          wchar_t* m_wchar;      };      #endif;  復(fù)制代碼 代碼如下:    #include “stdafx.h”      #include “use.h”      CUser::CUser()      :m_char(NULL)      ,m_wchar(NULL)      {      }      CUser::~CUser()      {          Release();      }      char* CUser::WcharToChar(const wchar_t* wp)      {          Release();          int len= WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),NULL,0,NULL,NULL);          m_char=new char[len+1];          WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),m_char,len,NULL,NULL);          m_char[len]=’/0’;          return m_char;      }      wchar_t* CUser::CharToWchar(const char* c)      {          Release();          int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);          m_wchar=new wchar_t[len+1];          MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);          m_wchar[len]=’/0’;          return m_wchar;      }      void CUser::Release()      {          if(m_char)          {              delete m_char;              m_char=NULL;          }          if(m_wchar)          {              delete m_wchar;              m_wchar=NULL;          }      }      char* CUser::StringToChar(const string& s)      {          return const_cast<char*>(s.c_str());      }      char* CUser::WstringToChar(const std::wstring &ws)      {          const wchar_t* wp=ws.c_str();          return WcharToChar(wp);      }      wchar_t* CUser::WstringToWchar(const std::wstring &ws)      {          return const_cast<wchar_t*>(ws.c_str());      }      wchar_t* CUser::StringToWchar(const string& s)      {          const char* p=s.c_str();          return CharToWchar(p);      }      string CUser::WstringToString(const std::wstring &ws)      {          string s;          char* p=WstringToChar(ws);          s.append(p);          return s;      }      wstring CUser::StringToWstring(const std::string &s)      {          wstring ws;          wchar_t* wp=StringToWchar(s);          ws.append(wp);          return ws;      }  如果涉及到CString,可以利用CString::GetBuffer()函數(shù)來進(jìn)行轉(zhuǎn)換,道理一樣.
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 张北县| 吴旗县| 四平市| 荆州市| 淮滨县| 和硕县| 乡城县| 内丘县| 明水县| 长宁区| 霍林郭勒市| 房山区| 嵊泗县| 湘阴县| 泸州市| 林周县| 延安市| 上思县| 嵊泗县| 平泉县| 宣恩县| 临西县| 三门县| 临沂市| 武鸣县| 体育| 吉林市| 龙口市| 诏安县| 邳州市| 新河县| 平谷区| 梧州市| 湘潭县| 邵阳市| 和平区| 沈阳市| 修武县| 元阳县| 板桥市| 志丹县|