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;
    }
  • 相关阅读:
    无穷字符串问题--CSDN上的面试题(原创)
    c语言:将二进制数按位输出
    构造和为指定值的表达式:±1±2±3±4±5=3 确定符号
    c语言:最长对称子串(3种解决方案)
    最长公共子串
    ie7下 滚动条内容不动问题
    沙盒密探——可实现的js缓存攻击
    yii2归档安装
    php 安装composer
    [转]-Android Studio 快捷键整理分享-SadieYu
  • 原文地址:https://www.cnblogs.com/zhaojihui/p/6823297.html
Copyright © 2011-2022 走看看