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;
}