L1-094 剪切粘贴

这个题目是stl的使用和字符串拼接。
java里头substring是从首部到尾部的位置,但是C++里面substr是首部位置,和要截取的长度。
我算这种经常出错,每次都搞得很晕。

#include <bits/stdc++.h>
using namespace std;
string cs;
int main() {
	cin >> cs;
	int cnt;
	cin >> cnt;
	while (cnt--) {
		int c1, c2;
		string s1, s2;
		cin >> c1 >> c2 >> s1 >> s2;
		string subs =  cs.substr(c1 - 1, c2 - c1 + 1);//剪切的一段
		cs = cs.substr(0, c1 - 1) + cs.substr(c2);//剪切之后剩下的字符串拼在一起
		string find = s1 + s2;//待插入的两端
		if (cs.find(find) != string::npos) {//找到第一个匹配位置
			int pos = cs.find(find);
			cs = cs.substr(0,pos+s1.size()) + subs + cs.substr(pos + s1.size());
		}
		else {//找不到拼接到最后
			cs = cs + subs;
		}
	}
	cout << cs << endl;
	return 0;
}

这篇博客写法也可以:https://blog.csdn.net/m0_62531913/article/details/136774843

posted @ 2024-04-02 08:52  YuKiCheng  阅读(65)  评论(0编辑  收藏  举报