#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 split(" \t:,\v\r\n\f");
string word;
vector<string> longestWord,shortestWord;
string::size_type maxlen,minlenx,wordLen,count = 0;
string::size_type startPos = 0,endPos = 0;
while((startPos = sentence.find_first_not_of(split,endPos)) != string::npos)
{
count++;//记录单词数
endPos = sentence.find_first_of(split,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(split,endPos);//设置下一次查找的开始位置
if(count == 1)
{
maxlen = minlenx = wordLen;
longestWord.push_back(word);
shortestWord.push_back(word);
}
else
{
if(wordLen > maxlen)
{
maxlen = wordLen;
longestWord.clear();
longestWord.push_back(word);
}
else if(wordLen == maxlen)
{
longestWord.push_back(word);
}
if(wordLen < minlenx)
{
minlenx = wordLen;
shortestWord.clear();
shortestWord.push_back(word);
}
else if(wordLen == minlenx)
{
shortestWord.push_back(word);
}
}
}
cout << "word count :" << count << endl;
vector<string>::iterator iter;
cout << "output longest word" << endl;
for(iter = longestWord.begin(); iter != longestWord.end(); iter++)
cout << *iter << endl;
cout << "output shortest word" << endl;
for(iter = shortestWord.begin(); iter != shortestWord.end(); iter++)
cout << *iter << endl;
return 0;
}