1: // 2: // Fourth iteration: bid last char *'s farewell by 3: // taking a string &. 4: // 5: 6: template 7: Container make_s(const std::string &intext, 8: bool stripLeadingSpaces = true) 9: { 10: using std::string; 11: Container c; 12: string::const_iterator nextComma; 13: 14: string::const_iterator curPos = intext.begin(); 15: 16: while (true) 17: { 18: nextComma = std::find(curPos, intext.end(), ','); 19: 20: if (stripLeadingSpaces) 21: while (curPos != nextComma && isspace(*curPos)) 22: ++curPos; 23: 24: c.push_back(string(curPos, nextComma)); 25: 26: if (nextComma == intext.end()) 27: break; 28: 29: curPos = ++nextComma; 30: } 31: 32: return c; 33: }