wchar_t char wstring string 项目转换
1.wchart_t转wstring
wchar_t tmpRuleStr[10] = {0};
wstring m_tmpRuleStr = wstring(tmpRuleStr);
2.wstring转wchar_t
wstring str = "123";
wchar_t* tmp = wstr.c_str();
3.string转wstring
std::wstring UTF8ToUnicode(const std::string& utf)
{
wchar_t *buff = new wchar_t[utf.length()+1];
int len = ::MultiByteToWideChar(CP_UTF8, 0, utf.c_str(), (int)utf.length(), buff, (int)utf.length()+1);
std::wstring str(buff, len);
delete [] buff;
return str;
}
std::wstring AnsiToUnicode(const std::string& str)
{
wchar_t *buff = new wchar_t[str.length()+1];
int len = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), buff, str.length()+1);
std::wstring text(buff, len);
delete [] buff;
return text;
}
4.wstring转string
std::string UnicodeToUTF8(const std::wstring& str)
{
char* buff;
int buffersize = ::WideCharToMultiByte(CP_UTF8, 0, str.c_str(), (int)str.length(), 0, 0, 0, 0);
buff = new char[buffersize+1];
int len = ::WideCharToMultiByte(CP_UTF8, 0, str.c_str(), (int)str.length(), buff, buffersize+1, 0, 0);
std::string utf(buff, len);
delete []buff;
return utf;
}
std::string UnicodeToAnsi(const std::wstring& str)
{
char *buff;
int buffersize = ::WideCharToMultiByte(CP_ACP, 0, str.c_str(), str.length(), 0, 0, NULL, NULL);
buff = new char[buffersize+1];
int len = ::WideCharToMultiByte(CP_ACP, 0, str.c_str(), str.length(), buff, buffersize + 1, NULL, NULL);
std::string text(buff, len);
delete [] buff;
return text;
}