#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> explode(string delimiter, string str)
{
vector<string> arr;
if (!str.empty()) {
string::size_type pos, oldpos = 0;
while (pos = str.find(delimiter, oldpos))
{
if (pos == string::npos)
{
arr.push_back(str.substr(oldpos));
break;
}
else
{
arr.push_back(str.substr(oldpos, pos - oldpos));
oldpos = pos + delimiter.length();
}
}
}
return arr;
}
string join(string delimiter, vector<string> &str)
{
string result;
vector<string>::iterator iter;
for (iter = str.begin(); iter < str.end(); iter++)
{
result += *iter;
if (iter + 1 < str.end())
result += delimiter;
}
return result;
}
int main(void)
{
vector<string> list = explode(", ", "this, that, these, those, find a pen, the pen");
cout << "Size: " << list.size() << endl;
vector<string>::iterator iter;
for (iter = list.begin(); iter < list.end(); iter++)
cout << *iter << endl;
cout << join(";", list) << endl;
return 0;
}