std::string test_str = "year,mon,day,hh"; std::vector<std::string> res = splitwithstr(test_str, ','); for (int i=0; i<res.size(); i++) { std::cout << res[i] << std::endl; } std::vector<std::string> splitwithstr(std::string &str,char ch) { std::string tmpstr = str+ch; std::vector<std::string> res; if (str.size()<=0) { return res; } size_t pos = tmpstr.find(ch); size_t size = tmpstr.size(); while (pos!=std::string::npos) { std::string child_str = tmpstr.substr(0, pos); if (child_str.size()>0) { res.push_back(child_str); } tmpstr = tmpstr.substr(pos + 1); pos = tmpstr.find(ch); } return res; } int main() { char s[] = "my name is lmm"; char *p; const char *delim = " "; p = strtok(s, delim); while(p) { cout << p << endl; p = strtok(NULL, delim); } return 0; }