⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 replace.h

📁 本人自己编写的用于文本编辑开发的小软件
💻 H
字号:
#ifndef REPLACE_H
#define REPLACE_H
int *Next(string P)		//特征向量计算函数
{
	int m=P.size();
	int * N=new int [m];
	N[0]=0;
	for(int i=1;i<m;i++)
	{
		int k=N[i-1];
		while(k>0&&P[i]!=P[k])
			k=N[k-1];
		if(P[i]==P[k])
			N[i]=k+1;
		else
			N[i]=0;
	}
	return N;
}
int KMP_FindPat(string S,string P,int * N,int startindex)	//KMP匹配函数
{
	int LastIndex=S.size()-P.size();
	if((LastIndex-startindex)<0)
		return -1;
	int i,j=0;
	for(i=startindex;i<S.size();i++)
	{
		while(P[j]!=S[i]&&j>0)
			j=N[j-1];
		if(P[j]==S[i])
			j++;
		if(j==P.size())
			return i-j+1;
	}
	return -1;
}
void Replace()
{
	string temp1,temp2;		//temp1是目标字符串,temp2是替换后的字符串
	cout<<"请输入要替换的字符串:"<<endl;//由于getline不吃最后一个回车,所以要回车两次
	cin.ignore();
	getline(cin,temp1);
	cout<<"请输入替换后的字符串:"<<endl;
	cin.ignore();
	getline(cin,temp2);
	int *N;
	N=Next(temp1);
	for(j=v.begin();j!=v.end();++j)		//全文替换
	{
		int startindex=0,start;
		start=KMP_FindPat((*j)->s,temp1,N,startindex);
		if(start==-1)					//无需替换,直接跳过
			continue;
		(*j)->s.replace(start,temp1.size(),temp2);
	}
	cout<<"全文替换成功!"<<endl;		//全文替换成功提示
	history++;							//历史记录保存
	fstream fhisout("history.his",ios::app|ios::out);
	fhisout<<"将"<<temp1<<"全文替换为"<<temp2<<'\n';
	fhisout.close();
	system("pause");
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -