Jak zaimplementować pythonowy split() używając stl'a?

0

Hejo,
Próbuję od niedawna zrobić swoją własną implementację funkcji split(), która działa tak samo jak ta z Pythona. Czyli: przekazywany jest dowolny łańcuch z którego się wyciąga pojedyncze wyrazy i wrzuca do kontenera, a funkcja gotowy kontener zwraca. Póki co mam w kodzie workarounda używającego std::istringstream i działa tak jak powinien, ale zastanawiam się w jaki sposób zaimplementować to używając stl'a.
aktualne rozwiązanie:

template<typename T, typename C = std::vector<T>>
C split(T& str) {
	C vTemp;
	std::istringstream iss{str};
	std::copy(std::istream_iterator<std::string>{iss}, std::istream_iterator<std::string>{}, std::back_inserter(vTemp));
	return vTemp;
}

kombinuję z różnymi wariacjami std::find(), ale nie wiem jak przerobić cały łańcuch na raz - w sensie, który algorytm będzie na bieżąco wrzucał do kontenera słowa oddzielone spacją? zastanawiałem się też nad std::copy_if, ale nie mam pomysłu na predykat. Macie jakieś fajne pomysły na algorytmy lub predykaty?
Pozdro!

3

Wydaje mi się, że ten:
https://www.fluentcpp.com/2017/04/21/how-to-split-a-string-in-c/
artykuł wyczerpuje temat.

0

fajne rozwiązania, ale widzę, że autor nie męczył się z jakimiś std::find(), tylko jak ja w swoim pierwszym rozwiązaniu użył streamów. Nie wiedziałem, że boost implementuje taką funkcję, może uda mi się kod źródłowy znaleźć i podpatrzeć jak oni to rozkminili ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1