zoukankan      html  css  js  c++  java
  • c++ ANSI、UNICODE、UTF8互转

        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;
    }
  • 相关阅读:
    提示“Resource temporarily unavailable”的原因及解决办法
    TQ2440与西门子S7-200 PLC自由口通信实现过程中问题总结
    SQL与SQL Server
    JavaScript:事件对象Event和冒泡
    JavaScript动画:offset和匀速动画详解(含轮播图的实现)
    JavaScript基础:BOM的常见内置方法和内置对象
    JavaScript实现Tab栏切换
    JavaScript基础:DOM操作详解
    JavaScript语法基础:数组的常用方法详解
    JavaScript语法详解:if语句&for循环&函数
  • 原文地址:https://www.cnblogs.com/lidabo/p/3903620.html
Copyright © 2011-2022 走看看