1. 程式人生 > >字符串的查找刪除(王道)

字符串的查找刪除(王道)

mes 三種 查詢位置 用法 數據保存 叠代 spa 小寫 printf

題目描述:

給定一個短字符串(不含空格),再給定若幹字符串,在這些字符串中刪除所含有的短字符串。

輸入:

輸入只有1組數據。
輸入一個短字符串(不含空格),再輸入若幹字符串直到文件結束為止。

輸出:

刪除輸入的短字符串(不區分大小寫)並去掉空格,輸出。

樣例輸入:
in
#include 
int main()
{

printf(" Hi ");
}
樣例輸出:
#clude
tma()
{

prtf("Hi");
}
提示:

註:將字符串中的In、IN、iN、in刪除。

 1 #include <iostream>
 2 #include<string.h>
 3
#include<cstdio> 4 using namespace std; 5 6 int main() 7 { 8 char str[101]; 9 gets(str); 10 string a=str; 11 for(int i=0;i<a.size();i++) 12 a[i]=tolower(a[i]); 13 while(gets(str)){ 14 string b=str,c=b; 15 for(int i=0;i<b.size();i++) 16 b[i]=tolower(b[i]);
17 int t=b.find(a,0); 18 while(t!=string::npos){ 19 c.erase(t,a.size()); 20 b.erase(t,a.size());//這裏之所以還要用一個b是為了查詢,即c是初始字符串,b是用來查詢位置的
//這裏的erase是第一種用法。
21 t=b.find(a,t); 22 } 23 t=c.find( ,0); 24 while
(t!=string::npos){ 25 c.erase(t,1); 26 t=c.find( ,0); 27 } 28 cout << c << endl; 29 } 30 return 0; 31 }

這個代碼主要是幾個函數的使用:

1.gets函數:讀入輸入中一整行的數據保存在str中

2.tolower函數:a中字符全部改成小寫

3.find函數:前一個參數是配對字符串,後一個參數是查找開始下標。如果能找到,返回第一次出現的下標;如果不能找到,返回string::npos

4.erase函數:有三種用法:

(1)erase(pos,n); 刪除從pos開始的n個字符,比如erase(0,1)就是刪除第一個字符
(2)erase(position);刪除position處的一個字符(position是個string類型的叠代器)
(3)erase(first,last);刪除從first到last之間的字符(first和last都是叠代器)

字符串的查找刪除(王道)