直播短視訊源碼,實作文本替換相關的代碼
#include <stdio.h>
#include <string>
#include <regex>
#include <fstream>
#include <iostream>
#include <set>
using namespace std;
// ? 與 {0,1}:0個或1個前面的内容 或 前面的内容是可選的
// * 與 {0,} : 0 個或多個前面的内容
// + 與 {1,}: 1 個或多個前面的内容
void mtRW(string basePath,string dirName,string strReplace){
string path = basePath+dirName+".vmoptions";
string pathBak=basePath+dirName+".vmoptions.bak";
string pathRe = basePath+dirName+".vmoptions-Re";
string cmd1="gedit "+string(path);
string cmd2="gedit "+string(pathBak);
regex patternTempRe("^-javaagent:/home/jl73/.jetbrains/jetbrains-agent-v3.2.0.0f1f.69e=(.*)");
string temp;
string temp2="";
set<string> chs;
set<string>::iterator it;
// regex patternSet("[^A-Za-z0-9 \\t]");
regex patternSet("[^A-Za-z0-9 \\t\\\\]");
smatch resultTempRe,resultSet;
string strTempRe;
ifstream rf(path);
if(!rf){
cout<<"read xxx"<<endl;
}
ofstream wfBak(pathBak);
if(!wfBak){
cout << "bak xxx" << endl;
}
while(getline(rf,temp)){
wfBak<<temp<<endl;
if(regex_match(temp,resultTempRe,patternTempRe)) {
strTempRe=string(resultTempRe[1]);
string::const_iterator iterStart = strTempRe.begin();
string::const_iterator iterEnd = strTempRe.end();
string tmp;
while (regex_search(iterStart, iterEnd, resultSet, patternSet)) {
tmp = resultSet[0];
chs.insert((string)tmp);
iterStart = resultSet[0].second; //更新搜尋起始位置,搜尋剩下的字元串
}
// chs.erase("\\");
strTempRe = regex_replace(strTempRe, regex("\\\\"), "\\\\");
for (auto ch:chs) {
strTempRe = regex_replace(strTempRe, regex("\\" + ch), "\\" + ch);
}
temp2=temp2+regex_replace(temp,regex(strTempRe),strReplace)+"\n";
}
else{
temp2=temp2+temp+'\n';
}
}
rf.close();
wfBak.close();
// ofstream wf(path);
ofstream wf(pathRe);
if(!wf){
cout<<"write xxx"<<endl;
}
wf<<temp2;
wf.close();
// system(cmd1.c_str());
// system(cmd2.c_str());
cout << dirName <<"\treplace done"<< endl;
}
int main(int argc,const char *argv[]){
// if(argc!=2){
// perror("argc=2");
// exit(1);
// }
// string basePath="/home/jl73/.config/JetBrains/";
string basePath="/home/jl73/7-tmp/";
string dirNames[]={"CLion2020.2/clion","GoLand2020.2/goland","IntelliJIdea2020.2/idea","PyCharm2020.2/pycharm"};
// string strReplace="12`!@#%&-_=:|}].;\"'<>/\\\\\\\\<>. \\$^*()+{}[]|?`, /!@#%&-_=:;\"'<>.";
string strReplace;
ifstream rf(basePath+"str");
if(!rf){
cout<<"read xxx"<<endl;
}
getline(rf,strReplace);
// cout << strReplace << endl;
for (auto dirName :dirNames ) {
mtRW(basePath,dirName,strReplace);
// mtRW(basePath,dirName,argv[1]);
}
return 0;
}
以上就是直播短視訊源碼,實作文本替換相關的代碼, 更多内容歡迎關注之後的文章