//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/3r5E1f9YP
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <string_view>
#include <ranges>
using std::vector; using std::string; using std::string_view;
using namespace std::literals; using std::find_if;
vector<string> demo_split(string_view s) {
vector<string> result{};
auto it = s.begin();
while(it != s.end()) {
// bis normales Zeichen:
it = find_if(it, s.end(), [](char c) { return c!=' '; });
// bis Leerzeichen:
auto jt = find_if(it, s.end(), [](char c) { return c==' '; });
if(it!=s.end())
result.push_back(string(it, jt)); // Kopie ins Ergebnis
it = jt;
}
return result;
}
int main() {
auto text = "Der Text ist kurz"sv;
auto res = demo_split(text);
std::ranges::for_each(res, [](const string &e) {
std::cout << "[" << e << "] "; });
std::cout << '\n'; // Ausgabe: [Der] [Text] [ist] [kurz]
// oder gleich mit views::split:
for(auto word : text | std::views::split(" "sv)) {
std::cout << "[";
for(auto c : word) std::cout << c;
std::cout << "] ";
} // Ausgabe: [Der] [Text] [ist] [kurz]
}