#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
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;
string separators(" \t:,\v\r\n\f");
string word;
string::size_type maxlen,minlen,wordlen,count=0;
vector<string> longestWords,shortestWords;
string::size_type startPos=0,endPos=0;
while((startPos=sentence.find_first_not_of(separators,endPos))!=string::npos)
{
++count;
endPos=sentence.find_first_of(separators,startPos);
if(endPos==string::npos)
{
wordlen=sentence.size()-startPos;
}
else
{
wordlen=endPos-startPos;
}
word.assign(sentence.begin()+startPos,sentence.begin()+startPos+wordlen);
startPos=sentence.find_first_not_of(separators,endPos);
if(count==1)
{ maxlen=minlen=wordlen;
longestWords.push_back(word);
shortestWords.push_back(word);
}
else
{
if(wordlen>maxlen)
{
maxlen=wordlen;
longestWords.clear();
longestWords.push_back(word);
}
else if(wordlen==maxlen)
longestWords.push_back(word);
if(wordlen<minlen)
{
minlen=wordlen;
shortestWords.clear();
shortestWords.push_back(word);
}
else if(wordlen==minlen)
shortestWords.push_back(word);
}
}
cout<<"word amount "<<count<<endl;
vector<string>::iterator iter;
cout<<"longest word(s):"<<endl;
iter=longestWords.begin();
while(iter!=longestWords.end())
cout<<*iter++<<endl;
cout<<"shortest word(s):"<<endl;
iter=shortestWords.begin();
while(iter!=shortestWords.end())
cout<<*iter++<<endl;
return 0;
}
转载于:https://my.oschina.net/lizming/blog/209933