std::string WideToUTF8(const wide_string& wide) { char * narrow = new char[wide.length()*3+2]; int ret = (int)WideCharToMultiByte(CP_UTF8, 0, wide.c_str(), (int)wide.size(), narrow, (int)wide.length()*3 - 1, NULL, NULL); narrow[ret] = 0; std::string str = narrow; delete[] narrow; return str; }
std::string WideToMultibyte(const wide_string& wide) { char * narrow = new char[wide.length()*3+2]; BOOL defaultCharUsed; int ret = (int)WideCharToMultiByte(CP_ACP, 0, wide.c_str(), (int)wide.size(), narrow, (int)wide.length()*3 - 1, ".", &defaultCharUsed); narrow[ret] = 0; std::string str = narrow; delete[] narrow; return str; }
std::string CUnicodeUtils::StdGetUTF8(const wide_string& wide) { int len = (int)wide.size(); if (len==0) return std::string(); int size = len*4; char * narrow = new char[size]; int ret = WideCharToMultiByte(CP_UTF8, 0, wide.c_str(), len, narrow, size-1, NULL, NULL); narrow[ret] = 0; std::string sRet = std::string(narrow); delete [] narrow; return sRet; }