国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 海兴县| 南漳县| 和田市| 云南省| 随州市| 富平县| 岗巴县| 乌什县| 湖口县| 汉寿县| 平定县| 确山县| 合作市| 东阳市| 五指山市| 如东县| 九寨沟县| 和林格尔县| 淮阳县| 秦安县| 馆陶县| 邮箱| 邯郸市| 黄大仙区| 家居| 元朗区| 红安县| 桦甸市| 曲沃县| 武邑县| 仁化县| 丰宁| 卢湾区| 庄浪县| 荃湾区| 家居| 新龙县| 绍兴县| 保亭| 孝感市| 和硕县|