zoukankan      html  css  js  c++  java
  • 字符集转换

    //////.h/////////////////////////////////////////////////////
     
    #ifndef USE_H_
    #define USE_H_
     
    #include <iostream>
    #include <windows.h>
    #include <string>
    using namespace std;
     
    //字符类型 wchar_t char
    //获取字符长度 wcslen() strlen()
    //连接两个字符串 wcscat() strcat()
    //复制字符串 wcscpy() strcpy()
    //比较两个字符串 wcscmp() strcmp()
    //具体参数详见百度
    class CUser
    {
    public:
        CUser();
        virtual~ CUser();
        char* WcharToChar(const wchar_t* wp);
        char* StringToChar(const string& s);
        char* WstringToChar(const wstring& ws);
        wchar_t* CharToWchar(const char* c);
        wchar_t* WstringToWchar(const wstring& ws);
        wchar_t* StringToWchar(const string& s);
        wstring StringToWstring(const string& s);
        string WstringToString(const wstring& ws);
        void Release();
    private:
        char* m_char;
        wchar_t* m_wchar;
    };
    #endif;
     
     
    ////////.C/////////////////////////////////////////////
    #include "stdafx.h"
    #include "use.h"
    CUser::CUser()
    :m_char(NULL)
    ,m_wchar(NULL)
    {
    }
    CUser::~CUser()
    {
        Release();
    }
    char* CUser::WcharToChar(const wchar_t* wp)
    {
        Release();
        int len= WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),NULL,0,NULL,NULL);
        m_char=new char[len+1];
        WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),m_char,len,NULL,NULL);
        m_char[len]='';
        return m_char;
    }
    wchar_t* CUser::CharToWchar(const char* c)
    {
        Release();
        int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);
        m_wchar=new wchar_t[len+1];
        MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);
        m_wchar[len]='';
        return m_wchar;
    }
    void CUser::Release()
    {
     
        if(m_char)
           {
                 delete [] m_char;
                 m_char=NULL;
           }
           if(m_wchar)
           {
                 delete [] m_wchar;
                 m_wchar=NULL;
           }
    }
    char* CUser::StringToChar(const string& s)
    {
        return const_cast<char*>(s.c_str());
    }
    char* CUser::WstringToChar(const std::wstring &ws)
    {
        const wchar_t* wp=ws.c_str();
        return WcharToChar(wp);
    }
    wchar_t* CUser::WstringToWchar(const std::wstring &ws)
    {
        return const_cast<wchar_t*>(ws.c_str());
    }
    wchar_t* CUser::StringToWchar(const string& s)
    {
        const char* p=s.c_str();
        return CharToWchar(p);
    }
    string CUser::WstringToString(const std::wstring &ws)
    {
        string s;
        char* p=WstringToChar(ws);
        s.append(p);
        return s;
    }
    wstring CUser::StringToWstring(const std::string &s)
    {
        wstring ws;
        wchar_t* wp=StringToWchar(s);
        ws.append(wp);
        return ws;
    }
  • 相关阅读:
    Nodejs下载和第一个Nodejs示例
    永久关闭Win10工具栏的TaskbarSearch控件
    对称加密,非对称加密,散列算法,签名算法
    【转】TTL和RS232之间的详细对比
    zlg核心板linux系统中查看系统内存等使用信息
    Power BI后台自动刷新数据报错 The operation was throttled by Power BI Premium because there were too many datasets being processed concurrently.
    剪切板和上传文件内容获取
    CSS, LESS, SCSS, SASS总结
    文字程序
    electron 打包“ERR_ELECTRON_BUILDER_CANNOT_EXECUTE”
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243343.html
Copyright © 2011-2022 走看看