Используйте стандартный алгоритм std::sort()
, предоставляя ему предикат, который сортирует в порядке убывания, например:
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <algorithm>
int main() {
std::vector<std::string> v;
std::string s;
std::getline(std::cin, s);
std::istringstream iss(s);
while (iss >> s) {
v.push_back(s);
}
std::sort(v.begin(), v.end(),
[](const std::string &a, const std::string &b){ return a.size() >= b.size(); }
);
for(auto &word: v) {
std::cout << word << std::endl;
}
return 0;
}
Живая демонстрация