#include #include #include // adapted from: http://stackoverflow.com/a/28142357/831725 auto split(std::string_view input, std::string_view separator = "\\s+") { std::vector result; std::regex rex(separator.begin(), separator.end()); std::cregex_token_iterator iter(input.begin(), input.end(), rex, -1); std::cregex_token_iterator end; // -1 : get stuff not matched by regex for (; iter != end; ++iter) { std::string_view::size_type numchars = iter->second - iter->first; result.push_back({iter->first, numchars}); } return result; } int main() { for (auto e : split("eins zwei drei ")) // Whitespaces als Trenner { std::cout << e << '\n'; } for (auto e : split("vier|fuenf:sechs,sieben", "[|:,]")) { std::cout << e << '\n'; } }