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;
    }
  • 相关阅读:
    越长大越孤单
    关于ASP.NET 启动Process的讨论
    利用selenium开发一个功能测试的框架
    开博啦(上班时间)
    利用回发 实现一个简单的AutoComplete功能
    FIFO和双端口RAM
    8位定点数开方程序(贴下来以后研究)
    Eclipse下文件读取的问题:Failed to reading file xxxxx
    Error:NgdBuild:604解决方法(添加NGC文件方法)
    Mandelbrot:美丽的分形
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/5654411.html
Copyright © 2011-2022 走看看