zoukankan      html  css  js  c++  java
  • C++11函数转码

    #include <string>
    #include <codecvt>
    
    using namespace std;
    
    // utf8转unicode
    wstring utf8_to_wstring(const string &str)
    {
        wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt;
        return utf8_cvt.from_bytes(str);
    }
    
    // unicode转utf8
    string wstring_to_utf8(const wstring &str)
    {
        wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt;
        return utf8_cvt.to_bytes(str);
    }
    
    // gbk转unicode
    wstring  gbk_to_wstring(const string &str)
    {
        wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs"));
        return gbk_cvt.from_bytes(str);
    }
    
    // unicode转gbk
    string  wstring_to_gbk(const wstring &str)
    {
        wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs"));
        return gbk_cvt.to_bytes(str);
    }
    
    // utf8转gbk
    string utf8_to_gbk(const string &str)
    {
        wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; // utf8-》unicode转换器
        wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs")); // unicode-》gbk转换器
        wstring t = utf8_cvt.from_bytes(str);
        return gbk_cvt.to_bytes(t);
    }
    
    // gbk转utf8
    string gbk_to_utf8(const string &str)
    {
        wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; // utf8-》unicode转换器
        wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs")); // unicode-》gbk转换器
        wstring t = gbk_cvt.from_bytes(str);
        return utf8_cvt.to_bytes(t);
    } 
    int main()
    {
        locale::global(locale(""));
        string u8str = u8"我爱中国 i love china";
        string str = "我爱中国 i love china";
        wstring w1 = gbk_to_wstring(str);
        str = wstring_to_gbk(w1);
        
        cout << str << endl;
        wcout << w1 << endl;
    
        return 0;
    }
  • 相关阅读:
    常用 Git 命令清单
    谈谈关于PHP的代码安全相关的一些致命知识
    九个Console命令,让 JS 调试更简单
    有趣的博客小工具
    利用fputcsv导出数据备份数据
    IT小天博客APP版本
    七牛云存储文件批量下载工具使用教程
    Mysql的常见几种错误:1045,1044
    我是一个线程
    两行代码快速创建一个iOS主流UI框架
  • 原文地址:https://www.cnblogs.com/zhaojihui/p/6823297.html
Copyright © 2011-2022 走看看