#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc,char **argv)
{
string line1="We were her pride of 10 she named us: ";
string line2="Benjamin, phoenix, the prodigal";
string line3="and perspicacious pacific suzanne";
string sentence=line1+' '+line2+' '+line3;
char cr=' ';
string::size_type pos=0;
string::size_type length=0;
string::size_type maxlength=0;
string::size_type minlength=0;
string::size_type wordbeg=0;
string::size_type wordend=0;
string longword;
string shortword;
vector<string> vec;
while((pos=sentence.find_first_of(cr,pos))!=string::npos )
{
if(wordbeg==pos) //排除如果有两个空格相联的情况
{
++pos;
wordbeg=pos+1;
continue;
}
wordend=pos;
length=wordend-wordbeg;
vec.push_back(sentence.substr(wordbeg,length));
wordbeg=pos+1;
++pos;
}
vec.push_back(sentence.substr(wordbeg)); //在容器里面加上最后一个单词
//最短的单词要初始化,否则与0比较总是失败
minlength=(*vec.begin()).size();
shortword=*vec.begin();
for(vector<string>::iterator iter=vec.begin();
iter!=vec.end();++iter)
{
if(iter->size()>maxlength)
{
maxlength=iter->size();
//longword=*iter;
}
if(iter->size()<minlength)
{
minlength=iter->size();
//shortword=*iter;
}
}
shortword="";
for(vector<string>::iterator iter=vec.begin();
iter!=vec.end();++iter)
{
if(iter->size()==maxlength)
{
longword=longword+' '+*iter;
}
if(iter->size()==minlength)
{
shortword=shortword +' '+*iter;
}
}
cout<<"题目要求字符串:"<<endl<<sentence<<endl;
cout<<"最长的单词字数:"<<maxlength
<<" 单词是:"<<longword<<endl;
cout<<"最短的单词字数:"<<minlength
<<" 单词是:"<<shortword<<endl;
cout<<"单词总数为:"<<vec.size()<<endl;
return 0;
}