C++ snippet - string split 하기
문자열을 특정한 글자나 문자열로 분할해야 하는 경우는 자주 마주치는데, C++에서는 이 기본적인 기능이 표준 라이브러리에서 제공되지 않기 때문에 직접 구현하여 써야 한다.
어려운 일은 아니지만 그 때 그 때 만들기에는 번거롭기 때문에, 편리하게 간단한 snippet을 만들어 둔다.
상황에 따라 조금씩 고쳐야 하는 경우도 있긴 할 것이다.
문자로 분할하기
std::vector <std::string> tokenize(const std::string& str, char delim) {
std::vector<std::string> ret;
std::stringstream ss(str);
std::string token;
for (;;) {
if (!std::getline(ss, token, delim)) {
ret.emplace_back("");
break;
}
ret.emplace_back(token);
}
return ret;
}
문자열로 분할하기
std::vector<std::string> tokenize(const std::string& str, const std::string& delim) {
std::vector<std::string> ret;
size_t cur = 0;
for (;;) {
if (cur >= str.size()) {
ret.emplace_back("");
break;
}
const auto next = str.find_first_of(delim, cur);
ret.emplace_back(str.substr(cur, next - cur));
if (next == std::string::npos)
break;
cur = next + delim.size();
}
return ret;
}