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;
    }
  • 相关阅读:
    推荐系统之推荐系统的分类,即分析框架
    问题解决——OpenGL超级宝典 关于gltDrawTorus的错误解决
    SICP 习题 (1.10)解题总结
    [置顶] android 自定义圆角ImageView以及锯齿的处理
    Codeforces Round #199 (Div. 2)
    数组——约瑟夫问题
    素数距离问题_ny_24.java
    [置顶] Guava学习之Splitter
    植物-常见植物:地黄、熟地黄
    植物-常见植物:仙人掌
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318458.html
Copyright © 2011-2022 走看看