Created
September 28, 2020 08:35
-
-
Save navono/f745c998e45f7239fb7f68c4f9cde7a4 to your computer and use it in GitHub Desktop.
UTF8 - string in C++
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
std::string ofDewarServer::string_To_UTF8(const std::string & str) | |
{ | |
int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); | |
wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴 | |
ZeroMemory(pwBuf, nwLen * 2 + 2); | |
::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen); | |
int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL); | |
char * pBuf = new char[nLen + 1]; | |
ZeroMemory(pBuf, nLen + 1); | |
::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); | |
std::string retStr(pBuf); | |
delete []pwBuf; | |
delete []pBuf; | |
pwBuf = NULL; | |
pBuf = NULL; | |
return retStr; | |
} | |
std::string ofDewarServer::UTF8_To_string(const std::string & str) | |
{ | |
int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); | |
wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴 | |
memset(pwBuf, 0, nwLen * 2 + 2); | |
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen); | |
int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL); | |
char * pBuf = new char[nLen + 1]; | |
memset(pBuf, 0, nLen + 1); | |
WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); | |
std::string retStr = pBuf; | |
delete []pBuf; | |
delete []pwBuf; | |
pBuf = NULL; | |
pwBuf = NULL; | |
return retStr; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment