21void split(std::basic_string_view<T> token_list, std::basic_string_view<T> splitters,
22 const std::function<
void(std::basic_string_view<T>)>& apply_token,
23 const std::function<
void(std::basic_string_view<T>)>& apply_delim = {})
25 for (
size_t start_off = 0; start_off < token_list.size();)
27 const auto first_not_of_off = token_list.find_first_not_of(splitters, start_off);
28 if (first_not_of_off == std::string::npos)
31 if (apply_delim && start_off < first_not_of_off)
32 apply_delim(token_list.substr(start_off, first_not_of_off - start_off));
34 start_off = first_not_of_off;
35 const auto end_off = token_list.find_first_of(splitters, start_off);
36 if (end_off == std::string::npos)
38 if (apply_token && start_off < token_list.size())
39 apply_token(token_list.substr(start_off));
44 apply_token(token_list.substr(start_off, end_off - start_off));
void split(std::basic_string_view< T > token_list, std::basic_string_view< T > splitters, const std::function< void(std::basic_string_view< T >)> &apply_token, const std::function< void(std::basic_string_view< T >)> &apply_delim={})