Учитывая, что требуемый разделитель уже напрямую поддерживается стандартной библиотекой, я думаю, что я вообще пропущу использование регулярных выражений для этого и использую то, что уже присутствует в стандартной библиотеке:
std::vector<std::string> parse_lines(std::string const &input_string) {
std::istringstream buffer(input_string);
std::vector<std::string> ret;
std::string line;
while (std::getline(buffer, line))
ret.push_back(line);
return ret;
}
Как только вы решите проблему, рассматривая строку как поток и читая строки оттуда, у вас есть довольно много опций относительно деталей того, как вы идете оттуда. Просто для пары примеров, вы можете использовать классы линейного прокси и / или LineInputIterator, которые @UncleBens и я опубликовали в ответ на предыдущий вопрос .