手撕两个字符串切分函数
std::vector<std::string> split(const std::string& s, char c) {
std::vector<std::string> result;
auto start = s.find_first_not_of(c, 0);
while (start != std::string::npos) {
auto end = s.find_first_of(c, start + 1);
if (end == std::string::npos) {
result.push_back(s.sub_string(start));
break;
} else {
result.push_back(s.sub_string(start, end - start));
start = s.find_first_not_of(c, end + 1);
}
}
return result;
}
std::vector<std::string> parse(const std::string& s, char c) {
std::vector<std::string> result;
size_t start = 0;
while (start < s.size()) {
size_t end = s.find_first_of(c, start);
if (end == std::string::npos) {
result.push_back(s.sub_string(start));
break;
} else {
result.push_back(s.sub_string(start, end - start));
start = end + 1;
}
}
if (start == s.size()) {
result.push_back(std::string());
}
return result;
}
字符串切分主要分两种情况,空格切分和逗号切分,在空格切分中,连续的空格算作同一个分隔符,在逗号切分中,连续的逗号算作不同的切分符,结果是空格切分的结果中不包含空字符串,但是逗号切分的结果中可能会包含空字符串。
