北航机试-字符串的查找删除(C++)

来源:互联网 发布:秦王凿牛窄轨铁路知乎 编辑:程序博客网 时间:2024/06/05 04:39
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

输入:

输入只有1组数据。输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

输出:

删除输入的短字符串(不区分大小写)并去掉空格,输出。

样例输入:

in#include int main(){printf(" Hi ");}

样例输出:

#cludetma(){prtf("Hi");}

提示:

注:将字符串中的In、IN、iN、in删除。

#include <iostream>#include <string>using namespace std;int main(){    string str_in,str,x="",y,square = " ";    int index,k;    //cin>>str_in;    //cin.ignore();    getline(cin,str_in);    int len = str_in.size();    for(int i=0;i<len;i++)    {        x += tolower(str_in[i]);    }    while(getline(cin,str))    {        y ="";        index =0;        for(int j =0;j<str.size();j++)        {            y += tolower(str[j]);        }        while((k = y.find(x,index)) != string::npos)        {            y.erase(k,len);            str.erase(k,len);            index = k;        }        index = 0;        while((k = str.find(square,index)) != string::npos)        {            y.erase(k,1);            str.erase(k,1);            index = k;        }        cout<<str<<endl;    }    return 0;}

//#include<stdio.h>#include<iostream>#include<vector>#include<string>using namespace std;int main(){string s="", s1="",s2 = "";getline(cin, s);int pos = 0;int len = s.size(),lens1;for (int i = 0; i < len; i++){s[i] = tolower(s[i]);}int kongge = 0;while (getline(cin,s1)){lens1 = s1.size(); s2 = "";for (int i = 0; i < lens1; i++){s2 += tolower(s1[i]);}do{pos = s2.find(s);if (pos != string::npos){s1.replace(pos, len, "");s2.replace(pos, len, "");}} while (pos != -1);do{kongge = s1.find(" ");if (kongge != string::npos)s1.replace(kongge, 1, "");} while (kongge != -1);cout << s1 << endl;}}//abort()has been called,这是因为指针非法访问内存,注意检查指针的范围,上述代码是笔者参考前一个代码段来写的


0 0
原创粉丝点击