最近又到了找工作的时间,所以想每天抽点时间出来对编程进行相关训练。C++字符串是一个很重要的知识点,采用STL、算法等C++优于C的方面,能够使问题解决起来更加轻松。以下程序都是自己写的,可能有些地方时间效率、空间效率不高,所以希望大家能够多多讨论交流,互相提升。
题目:删除子串
说明:给定两个形参str和substr,其中str为源字符串,substr为需要删除的子串,如果str中包含substr,则将其删除并输出新的字符串,否则输出源字符串。
void delete_substr(string &str,const string &substr)
{
int m=0; //用于作为是否找到substr的标识
int flag=0; //退出循环的标志,这是因为可能在str中存在多个substr
while(flag==0)
{
m=str.find(substr); //find函数的使用
if(m<0)
{
flag=1; //用于退出循环
cout<<str;
}
else
{
str.erase(m,substr.size()); //目标是substr出现的地址,substr.size()表示从该地址开始需要删除的内容长度
}
}
}
int main()
{
string str,substr;
getline(cin,str);
getline(cin,substr);
delete_substr(str,substr);
}
如果存在相关问题,希望大家可以指点一二,谢谢!