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;
    }
  • 相关阅读:
    python模块—socket
    mac os系统的快捷键
    教你如何将UIImageView视图中的图片变成圆角
    关于ASP.NET MVC
    iOS 日期格式的转换
    将App通过XCode上传到AppStore 出现这个错误“An error occurred uploading to the iTunes Store”的解决方法
    关于MAC OS下面两个软件的功能改进——Dictionary和Fit 输入法
    分享一下上个星期的香港行程
    【博客园IT新闻】博客园IT新闻 iPhone 客户端发布
    解决Entity Framework Code First 的问题——Model compatibility cannot be checked because the database does not contain model metadata
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243343.html
Copyright © 2011-2022 走看看