Linux下,查找替换中文字符串,踩过的坑

在Linux环境下,如果需要查找和替换中文字符串,可能需要先将编码格式转换,然后进行查找替换操作。否则直接查找是无法查找成功的,因为windwos和linux默认的编码格式不同。

利用boost中的接口可以很方便的将编码格式转换,当然C++也有自带的编码格式转换接口,请自行查找。

#include <iostream>
#include <string>
#include <boost/locale.hpp>
using namespace std;

int main()
{
	string caption = "中文字幕测试(测试)";

	string caption_gbk = boost::locale::between(caption, "GBK", "UTF-8");
	while (caption_gbk.find("(") != caption_gbk.npos || caption_gbk.find(")") != caption_gbk.npos)
	{
		caption_gbk.replace(caption_gbk.find("("), 2, "(");
		caption_gbk.replace(caption_gbk.find(")"), 2, ")");
	}
	string caption_utf8 = boost::locale::between(caption_gbk, "UTF-8", "GBK");

	cout << caption_utf8 << endl;

	system("pause");
	return 0;
}

/*
程序目标:
			将字符串中的中文括号替换为英文括号
打印结果:
			中文字幕测试(测试)
			中文字幕测试(测试)
*/

谢谢阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值