#include <iostream>
#include <iterator>
#include <string>
#include <vector>

std::vector<std::string> split(const std::string& s, const std::string& delim)
{
    std::vector<std::string> result;

    std::size_t beg = 0;
    std::size_t end;
    while ((end = s.find(delim, beg)) != std::string::npos)
    {
        result.emplace_back(s.substr(beg, end - beg));
        beg = end + delim.size();
    }

    if (beg)
        result.emplace_back(s.substr(beg));

    return result;
}

template <typename container_type>
void print(std::ostream& os, const container_type& container, const std::string& sep = ", ")
{
    for (std::size_t i = 0; i < container.size() - 1; ++i)
        os << container[i] << sep;

    if (!container.empty())
        os << container.back();
}

int main()
{
    std::string s = "scott>=tiger>=mushroom";
    std::string d = ">=";

    std::cout << '"' << s << "\" split on \"" << d << "\" yields:\n";
    print(std::cout, split(s,d));
}