1. map<string,string> q; q[t]=s是 map的存储方法
q.coun[t]表示:在q中 t(后面那个)是否 有对应的 (前面那个)
2. string类型的函数:
s.replace(首位置,长度,替换内容),用完还要再赋给s!!!
s.find(t)也是,返回t在ans中的 首字符的位置
s.size()返回字符串s的长度3.两行文字,第一行用cin读入,第二行用getline 之前 要用getchar()读掉两行间的空格!
4.char型字符串,要用strcmp比较。string可直接==判断
#include<bits/stdc++.h> using namespace std; map<string,string> q; string s,t,ans; int main(){ cin>>s; while(cin>>s,s!="END"){//!=操作和scanf一样的 cin>>t; q[t]=s; } cin>>s; getchar();//读字典和书本间的换行 //要翻译的文章直接一行读 while(getline(cin,s),s!="END"){ ans=s;t=""; for(int i=0;i<s.size();i++){ if(s[i]>='a'&&s[i]<='z'){ t.push_back(s[i]); } //因为可翻译的是连续字母,所以遇到不是字母的就可判断是否可翻译. //这也导致了最后还要再处理一个单词 else{ if(q.count(t))//count表示t可否翻译 ans=ans.replace(ans.find(t),t.size(),q[t]); //把读入的一行中可以翻译的直接替换。(头,长度,替换的内容) t="";//替换之后t要清空 } } //还要再判断最后一部分能否替换 才能输出 if(q.count(t)) ans=ans.replace(ans.find(t),t.size(),q[t]); cout<<ans<<endl; } }
hdu1075 map<,> q用法!!容易忘
最新推荐文章于 2024-08-09 10:25:03 发布