• c++ ANSI、UNICODE、UTF8互转



    转载自:http://www.cppblog.com/Tongy0/archive/2013/03/13/198378.html

    static std::wstring MBytesToWString(const char* lpcszString); static std::string WStringToMBytes(const wchar_t* lpwcszWString); static std::wstring UTF8ToWString(const char* lpcszString); static std::string WStringToUTF8(const wchar_t* lpwcszWString); std::wstring KKLogObject::MBytesToWString(const char* lpcszString) { int len = strlen(lpcszString); int unicodeLen = ::MultiByteToWideChar(CP_ACP, 0, lpcszString, -1, NULL, 0); wchar_t* pUnicode = new wchar_t[unicodeLen + 1]; memset(pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t)); ::MultiByteToWideChar(CP_ACP, 0, lpcszString, -1, (LPWSTR)pUnicode, unicodeLen); wstring wString = (wchar_t*)pUnicode; delete [] pUnicode; return wString; } std::string KKLogObject::WStringToMBytes(const wchar_t* lpwcszWString) { char* pElementText; int iTextLen; // wide char to multi char iTextLen = ::WideCharToMultiByte(CP_ACP, 0, lpwcszWString, -1, NULL, 0, NULL, NULL); pElementText = new char[iTextLen + 1]; memset((void*)pElementText, 0, (iTextLen + 1) * sizeof(char)); ::WideCharToMultiByte(CP_ACP, 0, lpwcszWString, 0, pElementText, iTextLen, NULL, NULL); std::string strReturn(pElementText); delete [] pElementText; return strReturn; } std::wstring KKLogObject::UTF8ToWString(const char* lpcszString) { int len = strlen(lpcszString); int unicodeLen = ::MultiByteToWideChar(CP_UTF8, 0, lpcszString, -1, NULL, 0); wchar_t* pUnicode; pUnicode = new wchar_t[unicodeLen + 1]; memset((void*)pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t)); ::MultiByteToWideChar(CP_UTF8, 0, lpcszString, -1, (LPWSTR)pUnicode, unicodeLen); wstring wstrReturn(pUnicode); delete [] pUnicode; return wstrReturn; } std::string KKLogObject::WStringToUTF8(const wchar_t* lpwcszWString) { char* pElementText; int iTextLen = ::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszWString, -1, NULL, 0, NULL, NULL); pElementText = new char[iTextLen + 1]; memset((void*)pElementText, 0, (iTextLen + 1) * sizeof(char)); ::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszWString, -1, pElementText, iTextLen, NULL, NULL); std::string strReturn(pElementText); delete [] pElementText; return strReturn; }
  • 相关阅读:
    如何安全的创建线程池?
    【Java Proxy Pattern】Java的代理模式
    php全局变量/局部变量/静态变量
    php strstr()
    微信公众号开发(四):js-sdk的应用
    微信公众号平台开发(三):几大微信接口的调用
    php操作数据库
    微信公众号开发(一)--开发模式与编辑模式
    微信公众平台开发(二):交互与接口
    day6 字典的增减查删
  • 原文地址:https://www.cnblogs.com/liu-zh/p/4541677.html
Copyright © 2020-2023  润新知