Witam, mam do napisania funkcję, która przyjmuje jako argument string i zwraca vector string'ów, Zakładamy, że argument przechowuje jakieś zdanie (słowa są oddzielone spacjami). Funkcja ma zwrócić vector tych słów, np. string str = "ala ma kota", zwraca vector o zawartości {"ala", "ma", "kota"}.
Mam już napisany praktycznie cały program, lecz jest jeden problem. W moim sposobie funkcja nie zwraca ostatniego wyrazu, ponieważ nie występuje po nim spacja. Napisałem oddzielnego if'a, który powinien obsłużyć taką sytuację, lecz to nie pomogło. Ma ktoś jakiś pomysł jak to naprawić? Z góry dziękuję za pomoc!
#include <iostream>
#include <string>
#include <vector>
auto split(std::string str) -> std::vector<std::string>
{
std::vector<std::string> a;
std::string b;
for(size_t i = 0; i < str.size(); i++)
{
if(str[i] != ' ')
{
b += str[i];
}
else if(str[i] == str[str.size()-1])
{
a.push_back(b);
}
else if(str[i] == ' ')
{
a.push_back(b);
b.clear();
}
}
return a;
}
auto main() -> int
{
std::string s = "ala ma kota";
std::vector<std::string> przefiltrowane = split(s);
std::cout<<przefiltrowane.size()<<std::endl;
for(size_t i = 0; i < przefiltrowane.size(); i++)
{
std::cout<<przefiltrowane[i]<<" ";
}
std::cout<<std::endl;
return 0;
}