想用find与replace处理,但是过不了,有大佬瞅瞅哪里出错了吗?
查看原帖
想用find与replace处理,但是过不了,有大佬瞅瞅哪里出错了吗?
257318
BugManMax楼主2024/4/9 14:09
#include<iostream>
#include<string>
#include<cstring>
using namespace std;

int main(){
	string s,a,b;
	int i = 0;
	getline(cin,s);
	cin>>a>>b; 
	while(1){
  		//从i开始找,获得下标 
		int ret = s.find(a,i);
  		//找完后
		if(ret>s.size()){ 
			break;
		}
  		//单词不在开头 
		if(ret!=0){
			//单词前面为空格并且单词后面为空格或者为最后一个单词 
			if(s[ret-1]==' ' and (s[ret+a.length()]==' ' or ret+a.length()==s.size())){
				s.replace(ret,a.length(),b);
			}
		}else{
			//单词在开头并且后面为空格或者只有一个单词 
			if(s[ret+a.length()]==' ' or ret+a.length()==s.size()){
				s.replace(ret,a.length(),b);
			}
		}
		//移动到修改后的下一个单词开始 
		i=ret+b.length();
		//如果下一个开始超出,退出循环 
		if(i>s.size()){
			break;
		}
	}
	cout<<s;
	return 0;
}

2024/4/9 14:09
加载中...