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;
    }
  • 相关阅读:
    Java之ServiceLoader
    docker学习(3)--Dockfile详解
    docker学习(2)--基础命令
    docker学习(1)--基础概念
    dubbo学习(1)--简单的入门搭建实例
    Flume搭建及学习(基础篇)
    VM下--Linux根分区磁盘扩容
    Windows10下简单搭建zookeeper
    Windows10下搭建TensorFlow环境
    cmath库函数
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/5654411.html
Copyright © 2011-2022 走看看