• 字符串的查找删除(王道)


    题目描述:

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

    输入:

    输入只有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都是迭代器)
  • 相关阅读:
    iOS开发之JSONKit
    iOS开发之XMPPFramework环境搭建和配置
    iOS开发之UICollectionViewController
    iOS开发之UITableViewController重写
    Object-c 开发之property
    Git使用
    解决CocoaPods下载慢的问题
    解决Linux下编译adb和fastboot问题
    解决fastboot刷机内存消耗问题
    sql
  • 原文地址:https://www.cnblogs.com/xym4869/p/8634476.html
Copyright © 2020-2023  润新知