纯 C++ Boost 获得当前系统代码页,然后进行编码转换

博客介绍了借助纯C++和Boost库,获取系统代码页,并将UTF8字符串转换为系统字符集字符串的方法,学习资料来源于相关网络链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习自
https://www.v2ex.com/amp/t/396556
https://stackoverflow.com/questions/46686649/c-get-the-user-preferred-encoding-or-locale-encoding/46690618#46690618

纯C++和Boost库,获得系统代码页,并转换UTF8字符串到系统字符集的字符串。

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

using namespace std;

string get_local_name()
{
	string strCodePage = boost::locale::util::get_system_locale();
	locale loc = boost::locale::generator().generate(strCodePage);
	return use_facet<boost::locale::info>(loc).encoding();
}

int main()
{
	string local_cp = get_local_name();
	u8string s1 = u8"你好!";

	string s2 = boost::locale::conv::between((char*)s1.c_str(), (char*)s1.c_str()+s1.size(), local_cp, "UTF8");
	cout << s2 << endl;
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值