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

img
img

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

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

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


 
 
 Hint 
 


  



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


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


  



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


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


  




#include
#include
#include
#include
#include
#include
#include
#include
#include
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](https://img-blog.csdnimg.cn/img_convert/ca7373e419d7c5d66404695e679cc74e.png)
![img](https://img-blog.csdnimg.cn/img_convert/55aa1650351c93302362b18f1ae73d8a.png)

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

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

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

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

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值