C/C++乱码终极解决方案(BOOST库)

 boost 库功能强大,按照功能模块分类,大致可以分为如下:

字符串和文本处理库,容器库,迭代器库,算法库,函数对象和高阶编程库,泛型编程,模板元编程,预处理元编程,并发编程,数字和数学,排错和测试,数据结构,图像处理,输入输出,内存管理,跨语言混合编程,解析,编程接口等。

这里只介绍利用Boost库解决乱码的方式,看代码:

#include <boost/locale/encoding.hpp>
#include <iostream>
#include <string>
#include <iomanip>

using namespace std;
string UTF8toGBK(const string& str)
{
    return boost::locale::conv::between(str, "GBK", "UTF-8");
}

wstring GBKtoUTF8(const string & str)
{
    return boost::locale::conv::between(str, "UTF-8", "GBK");
}

string GBKtoUNICODE(const string & str)
{
    return boost::locale::conv::to_utf<wchr_t>(str, "GBK");
}

string UNICODEtoGBK(wString wstr)
{
    return boost::locale::conv::from_utf(wstr, "GBK");
}

string unicodeToUTF8(const wstring& str)
{
    return boost::locale::conv::from_utf(wstr, "UTF8");
}

wstring UTF8toUNICODE(const string & str)
{
    return boost::locale::conv::utf_to_utf<wchar_t>(str);
}

void print(const string& text)
{
    for(auto i:text)
    {
        cout <<hex<<"0x"<<setw(2)<<setfill('0')<<(int)(unsigned char)i<<" ";
    }
    cout << "\n" << text << endl;
}

int main()
{
    string s = "欢迎";
    print(s);
    print(GBKtoUTF8(s));
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值