//按字符分割,可以为多个分割符同时分割,例如 split(str, "",[]{}) vector<string> split(string str, string pattern){ vector<string> ret; if (pattern.empty()) return ret; size_t start = 0, index = str.find_first_of(pattern, 0); while (index != str.npos){ if (start != index) ret.push_back(str.substr(start, index - start)); start = index + 1; index = str.find_first_of(pattern, start); } if (!str.substr(start).empty()) ret.push_back(str.substr(start)); return ret; }
//按子串分割,将pattern作为一个整体 vector<string> split2(string str, string pattern){ vector<string> ret; if (pattern.empty()) return ret; size_t start = 0, index = str.find(pattern, 0); while (index != str.npos){ if (start != index) ret.push_back(str.substr(start, index - start)); start = index + pattern.size(); index = str.find(pattern, start); } if (!str.substr(start).empty()) ret.push_back(str.substr(start)); return ret; }