C++ 最简单的string与wstring互相转换

本文介绍了一种利用BOOST库简化Windows平台下字符串转换的过程,避免了使用WinAPI或ATL导致的代码冗长问题。通过示例代码展示了如何在不同平台上实现字符串的双向转换,并设置区域格式。

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

之前在网上找了,都是用调用WinAPI的 MultiByteToWideChar或是ATL的_BSTR过度。代码冗长,而且只适合在Windows平台。发现其实有个最简单的办法,利用BOOST库,兼顾平台无关与代码量。


#include <boost/locale.hpp>
#include <iostream>
int main(int argc, char** argv)
{

	using namespace std;

	wstring wtmp1 = L"我转换成了string";
	string tmp1 = "我转换成了wstring";
	wstring wtmp2 = boost::locale::conv::to_utf<wchar_t>(tmp1, "GBK");
	string tmp2 = boost::locale::conv::from_utf<wchar_t>(wtmp1, "GBK");

	setlocale(LC_ALL, "chs");
	wcout << "Wide string:" << wtmp2 << endl;
	cout << "MultiByte string:" << tmp2 << endl;

	cin.get();
	return 0;

}


运行结果在控制台显示如下:

Wide string:我转换成了wstring
MultiByte string:我转换成了string


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值