STRING: EXTRAER PALABRAS DE UN TEXTO Y ORDENARLAS
Si te refieres a un texto normal este seria el codigo (sacado de https://www.delftstack.com/es/howto/cpp/cpp-split-string-by-space/):
#include <iostream>
#include <string>
#include <sstream>
#include <iterator>
#include <vector>
#include <algorithm>
using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::istringstream;
using std::stringstream;
using std::string; using std::sort;
int main(){
string text = "palabra1 una dos a guia ";
string space_delimiter = " ";
vector<string> words{};
size_t pos = 0;
//obtener palabra a palabra de un texto
while ((pos = text.find(space_delimiter)) != string::npos) {
words.push_back(text.substr(0, pos));
text.erase(0, pos + space_delimiter.length());
}
/*Método burbuja de ordenación esta en muchas paginas explicado pero en este caso por el tamaño de las palabras también valdría para un array de string normal si fuese el otro caso*/
string aux;
for (int i = 0; i < words.size() - 1; i++) {
for (int j = 1; j < words.size(); j++){
if (words[j].size() < words[j-1].size())
{ // si el elemento anterior es mayor, hacemos el cambio
aux= words[j];
words[j] = words[j-1];
words[j-1] = aux;
}
}
}
//Mostrar resultado
for (int i=0;i<words.size();i++){
cout<<words[i]<<" ";
}
return EXIT_SUCCESS;
}