#include <iostream>
#include <string>
#include <vector>
#include <cstdlib> //EXIT_SUCCESS, FAILURE
using namespace std;
int main()
{
string line1 = "We were her pride of 10 she named us:";
string line2 = "Benjamin, Phoneix, the Prodigal";
string line3 = "and perspicacious pacific Suzanne";
string sentence = line1 + ' ' + line2 + ' ' + line3;
string sparators = " \t\n,.:";
string word;
vector<string>::size_type max = 0;
vector<string>::size_type min = 0;
vector<string>::size_type len = 0;
vector<string>::size_type count = 0;
vector<string>::size_type begpos = 0;
vector<string>::size_type endpos = 0;
vector<string> loword, shword;
while ((begpos = sentence.find_first_not_of(sparators, endpos)) != string::npos)
{
++count;
endpos = sentence.find_first_of(sparators, begpos);
if (endpos == string::npos)
len = sentence.size() - begpos;
else
len = endpos - begpos;
word.assign(sentence.begin() + begpos, sentence.begin() + begpos + len);
if (count == 1)
{
max = len;
loword.push_back(word);
min = len;
shword.push_back(word);
}
else if (len >= max)
{
if (len != max)
loword.clear();
max = len;
loword.push_back(word);
}
else if (len <= min)
{
if (len != min)
shword.clear();
min = len;
shword.push_back(word);
}
}
cout << sentence << endl;
cout << "number of words: " << count << endl;
cout << "maxlength: " << max << ". logest words: " << endl;
for (vector<string>::iterator iter = loword.begin(); iter != loword.end(); ++iter)
cout << *iter << " ";
cout << endl;
cout << "minlength: " << min << ". shortest words: " << endl;
for (vector<string>::iterator iter = shword.begin(); iter != shword.end(); ++iter)
cout << *iter << " ";
cout << endl;
system("pause");
return EXIT_SUCCESS;
}