您的位置:首页 > 编程语言 > C语言/C++

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

2017-01-06 18:33 169 查看
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。


输入:
输入只有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,这是因为指针非法访问内存,注意检查指针的范围,上述代码是笔者参考前一个代码段来写的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐