在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;
}
/*
程序目标:
将字符串中的中文括号替换为英文括号
打印结果:
中文字幕测试(测试)
中文字幕测试(测试)
*/
谢谢阅读