給定一個短字元串(不含空格),再給定若幹字元串,在這些字元串中删除所含有的短字元串。
輸入:
輸入隻有1組資料。
輸入一個短字元串(不含空格),再輸入若幹字元串直到檔案結束為止。
輸出:
删除輸入的短字元串(不區分大小寫)并去掉空格,輸出。
樣例輸入:
in
#include
int main()
{
printf(" Hi ");
}
樣例輸出:
#clude
tma()
{
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,這是因為指針非法通路記憶體,注意檢查指針的範圍,上述代碼是筆者參考前一個代碼段來寫的