Split a string on a set of delimiters
C++
#include <iostream>
#include <string_view>
#include <vector>
// Split on any of the characters in delimiters, skipping empty pieces.
std::vector<std::string_view> split(std::string_view text, std::string_view delimiters) {
std::vector<std::string_view> parts;
std::size_t start = text.find_first_not_of(delimiters);
while (start != std::string_view::npos) {
const std::size_t end = text.find_first_of(delimiters, start);
parts.push_back(text.substr(start, end - start));
if (end == std::string_view::npos) {
break;
}
start = text.find_first_not_of(delimiters, end);
}
return parts;
}
int main() {
const std::string_view text = " alpha, beta ,gamma ";
for (std::string_view field : split(text, " ,")) {
std::cout << '[' << field << "]\n";
}
}