【问题描述】
给定两个字符串s,t,要求将s中出现的t当做分割符,将s分割为多个子串
【输入形式】
输入为两行,第一行为字符串s,第二行为字符串t。字符串可能包含空格、制表符等
其中s和t的长度最长为100,最短为1
提示:cin.getline 可以用来处理带空格、制表符等的字符串输入
【输出形式】
输出为多行,每行为分割后的子串,按子串在s中从左到右的顺序输出,相邻的两个分割符之间需要输出空串
【样例输入1】
caaac
aa
【样例输出1】
c
ac
【样例输入2】
caaac
a
【样例输出2】
c
c
【样例说明】
对于样例1,通过最前面的“aa”对字符串分割,得到一个"c"和一个子串“ac”,因此输出有两行,第一行为"c",第二行为“ac”
对于样例2,通过“a”对“caaac”分割,得到两端的两个字符串“c”以及中间的两个空串,因此输出为第一行“c”,第二第三行都是空行,第四行为“c”
样例2中的空串解释: 以a为分割点,如果两个分割点间无任何字符,则输出一个空串,"caaac"用a分割的时候,实质为“c”+分割点+分割点+分割点+“c”,因此第一个和第二个分割点之间有一个空串,第二个和第三个分割点之间有一个空串,一共是两个空串。
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
while(a.find(b)!=-1)
{
string ss=a.substr(0,a.find(b));
cout<<ss<<endl;
a.erase(0,a.find(b)+b.length());
}
cout<<a;
}