深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换_C语言教程-查字典教程网
深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:#ifndefUSE_H_#defineUSE_H_#include#include#includeusingnamesp...

复制代码 代码如下:

#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;

复制代码 代码如下:

#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]='';

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]='';

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()函数来进行转换,道理一样.

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C语言学习
    热门C语言学习
    编程开发子分类