Languages<stringstream的使用+map集合的使用>_stringstream操作map(1)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

Hint

题目大意:先输入n行字符串,每一个字符串的第一个值为语言名字,随后便是该语言中包含有的单词

然后,输入多条句子,处理到文件结束,判断每一条句子属于那种言。

其实思路很简单,关键就是处理给出的句子当中,怎么分割每一个单词,根据题目意思,是可以用逗号,句号,感叹号,括号,分号,问号,空格来分隔每一个单词,所以我们可以将这些分隔符统一定为空格,这样方便处理一些

然后,关于用空格分割字符串,我们可以使用strtock,strstr函数等等,参照了一下网上大佬的代码,这里用的是stringstream流来进行处理

#include<cstdio>
#include<cctype>
#include<iostream>
#include<stack>
#include<map>
#include<cstring>
#include<string>
#include<sstream>
#include<queue>
using namespace std ;
int main()  {
    int n;
    cin>>n;
    string a,b,c;
    map<string,string> q;
    getchar();//这个getchar()不能省,如果省略了,相当于少输入了一行数据,因为getline遇到回车直接跳下一步了
    for(int i=0;i<n;i++){
        getline(cin,a);
        stringstream txt(a);
        txt>>b;
        while(txt>>c){//这里也是之前没考虑到的问题,一定要讲所有的单词同一大小写,注意,是单词统一大小写,语言的名字不管他
            for(int i=0;i<c.size();i++)
            {
                if(c[i]>='A'&&c[i]<='Z')
                    c[i]+=32;
            }

            q[c]=b;//把每个单词都归属于一个语言.
        }
    }
    while(getline(cin,a)){
        for(int i=0;i<a.size();i++)//同一分割符的标准,全部改成空格分隔;
            if (a[i]==','||a[i]=='.'||a[i]=='!'||a[i]==';'||a[i]=='?'||a[i]=='('||a[i]==')')
                a[i]=' ';
        stringstream txt1(a);
        string d;
        while(txt1>>d){
            for(int i=0;i<d.size();i++)//每一句话里面的单词也都要同一大小写.
            {
                if(d[i]>='A'&&d[i]<='Z')
                    d[i]+=32;
            }
        //cout<<d<<endl;
            if(q.count(d)){//如果找到有一个单词属于上面输入的语言之一,就直接输出。
                cout<<q[d]<<endl;
                break;
            }
        }


    }
    return 0 ;
}

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值