编程英语单词
# include & ltiostream & gt
# include & ltsstream & gt
# include & lt地图& gt
使用命名空间std
int main()
{
typedef string::size _ type ST;
//存储所有单词的长度、单词本身以及单词出现的位置。
多地图& ltST,pair & ltstring,ST & gt& gtm;
弦线;
cout & lt& lt请输入一个英语句子:
getline(cin,line);
ST pos = 0;
while((pos=line.find(','))& ltline.size())
第[pos]行=“”;//替换所有逗号。
istringstream ins(行);
字符串令牌;
pos = 0;
while(ins & gt;& gt令牌)
m . insert(pair & lt;ST,pair & ltstring,ST & gt& gt(token.size(),
pair & ltstring,ST & gt(token,pos=line.find(token,pos)+1));
ST t = m . r begin()-& gt;第一;
//地图容器默认按键排序,最后一个长度最长。去吧。
for(multimap & lt;ST,pair & ltstring,ST & gt& gt::reverse _ iterator it = m . Rb egin();
它!= m . rend();++it)
如果(它-& gt;first==t)
cout & lt& lt“最长的单词是”
& lt& lt"起始位置是:"
else break
}
如果有长度相同的单词,则以逆序显示,这样更简单。起始位置从1开始计算。