void smartSplit(string const& text, char delim, char esc, vector
{
enum State { NORMAL, IN_ESC };
State state = NORMAL;
string frag;
for (size_t i = 0; i<text.length(); ++i) { char c = text[i]; switch (state) { case NORMAL: if (c == delim) { if (!frag.empty()) tokens.push_back(frag); frag.clear(); } else if (c == esc) state = IN_ESC; else frag.append(1, c); break; case IN_ESC: frag.append(1, c); state = NORMAL; break; } } if (!frag.empty()) tokens.push_back(frag);}


