inline void Split(const std::string& s, char delim,
std::vector<std::string>* append_to) {
- if (s.empty()) {
- // splitting an empty string logically produces a single-element list
- append_to->emplace_back();
- } else {
- auto current = s.begin();
- while (current < s.end()) {
- const auto next = std::find(current, s.end(), delim);
- append_to->emplace_back(current, next);
- current = next;
- if (current != s.end()) {
- // it was the delimiter - need to be at the start of the next entry
- ++current;
- }
- }
+ auto current = s.begin();
+ while (current <= s.end()) {
+ auto next = std::find(current, s.end(), delim);
+ append_to->emplace_back(current, next);
+ current = next + 1;
}
}