string
写几个常用的
输入方式
1 | string s1; |
比较方式
1 | string s1; |
插入
1 | str.insert(pos,str2); //在下标为pos的字符前插入string类型的对象str2的副本 |
删除
1 | str.erase(pos,count); |
返回子串
1 | str.substr(pos,count); |
判空
1 | str.empty(); |
查找
1 | string s1="asdfghjkl" |
赋值
1 | string s1="abc"; |
描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入
in
#include
int main()
{
printf(“ Hi “);
}
样例输出:
#clude
tma()
{
prtf(“Hi”);
}
匹配串复制一份,模式串和复制的串全部转换为大写或者小写进行匹配,用find找到位置,在匹配串和复制串中都进行删除1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using namespace std;
int main()
{
char str[101];
gets(str);
string p=str;
for(int i=0;i<p.length();i++)
{
p[i]=tolower(p[i]);
}
while(gets(str))
{
string a=str; //小写
string b=a; //原始
for(int i=0;i<a.length();i++)
{
a[i]=tolower(str[i]);
}
int pos=a.find(p);
while(pos!=-1)
{
a.erase(pos,p.length());
b.erase(pos,p.length());
pos=a.find(p);
}
int t=b.find(' ');
while(t!=-1)
{
b.erase(t,1);
t=b.find(' ');
}
cout<<b<<endl;
}
return 0;
}
这里用了gets(str)进行了字符串的输入,这里做一下gets与scanf的区别
- gets依次读取遗留在输入缓存中的数据,直至遇到换行符,并将换外的所有字符保存在字符数组中(后面加’\0’),同时从输入缓冲中去除该换行符(‘\n’),所以可以用while(gets(str))一行一行的读取数据(换行符被去除了)。
- scanf(“%s”)读取输入缓存中的数据,直至遇到空格或换行,但scanf不会把空格或换行从输入缓存中移除,从而导致后续的gets函数不能正常使用。
如:1
2
3
4
5scanf("%s"str1); //输入aabb并回车
gets(str2); //输入ccdd,但str2读取的是'\n'
scanf("%s",str1); //输入aa空格bb
gets(str2);//此时str1="aa",str2=" bb"(前面有个空格)