zoukankan      html  css  js  c++  java
  • VS2015 下 unicode 字符转换类

    #include "cutil.h"
    #include <Windows.h>
    wstring CUtil::UTF8ToUnicode(const string& str)
    {
        int  len = 0;
        len = str.length();
        int  unicodeLen = ::MultiByteToWideChar(CP_UTF8,
            0,
            str.c_str(),
            -1,
            NULL,
            0);
        wchar_t *  pUnicode;
        pUnicode = new  wchar_t[unicodeLen + 1];
        memset(pUnicode, 0, (unicodeLen + 1)*sizeof(wchar_t));
        ::MultiByteToWideChar(CP_UTF8,
            0,
            str.c_str(),
            -1,
            (LPWSTR)pUnicode,
            unicodeLen);
        wstring  rt;
        rt = (wchar_t*)pUnicode;
        delete  pUnicode;
    
        return  rt;
    }
    
    string CUtil::UnicodeToUTF8(const wstring& str)
    {
        char*     pElementText;
        int    iTextLen;
        // wide char to multi char
        iTextLen = WideCharToMultiByte(CP_UTF8,
            0,
            str.c_str(),
            -1,
            NULL,
            0,
            NULL,
            NULL);
        pElementText = new char[iTextLen + 1];
        memset((void*)pElementText, 0, sizeof(char) * (iTextLen + 1));
        ::WideCharToMultiByte(CP_UTF8,
            0,
            str.c_str(),
            -1,
            pElementText,
            iTextLen,
            NULL,
            NULL);
        string strText;
        strText = pElementText;
        delete[] pElementText;
        return strText;
    }
    
    wstring CUtil::ANSIToUnicode(const string& str)
    {
        int len = 0;
        len = str.length();
        int unicodeLen = ::MultiByteToWideChar(CP_ACP,
            0,
            str.c_str(),
            -1,
            NULL,
            0);
        wchar_t * pUnicode;
        pUnicode = new wchar_t[unicodeLen + 1];
        memset(pUnicode, 0, (unicodeLen + 1)*sizeof(wchar_t));
        ::MultiByteToWideChar(CP_ACP,
            0,
            str.c_str(),
            -1,
            (LPWSTR)pUnicode,
            unicodeLen);
        wstring rt;
        rt = (wchar_t*)pUnicode;
        delete pUnicode;
        return rt;
    }
    
    
    string CUtil::UnicodeToANSI(const wstring& str)
    {
        char*     pElementText;
        int    iTextLen;
        // wide char to multi char
        iTextLen = WideCharToMultiByte(CP_ACP,
            0,
            str.c_str(),
            -1,
            NULL,
            0,
            NULL,
            NULL);
        pElementText = new char[iTextLen + 1];
        memset((void*)pElementText, 0, sizeof(char) * (iTextLen + 1));
        ::WideCharToMultiByte(CP_ACP,
            0,
            str.c_str(),
            -1,
            pElementText,
            iTextLen,
            NULL,
            NULL);
        string strText;
        strText = pElementText;
        delete[] pElementText;
        return strText;
    }
  • 相关阅读:
    Qt为啥从4.8直接就跳到5.3了呢?这不科学吧
    一段程序的人生 第10章: server
    项目记录23--unity-tolua框架MediatorManager
    Raft 为什么是更易理解的分布式一致性算法
    Caused by: java.lang.UnsatisfiedLinkError: Couldn&#39;t load BaiduMapVOS_v2_1_3: findLibrary returned nu
    Apache OFBIZ高速上手(二)--MVC框架
    Eclipse 导入逆向工程
    mysql 报错从 新安装
    maven项目创建4
    maven报错
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/5654411.html
Copyright © 2011-2022 走看看