C++에서는 불행하게도 문자열을 기반으로 split함수를 지원하지 않는다. 따라서 다음과 같이 구현해야 한다.
분해할 기준이 되는 delimiter를 기분으로 input에서 그걸 찾고 그걸 기반으로 input을 앞에서부터 지워가며 다시 찾는 로직. 그러면서 최종배열인 ret에다 넣어가며 split이 완성된 배열을 완성.
vector<string> split(string input, string del)
{
long long pos = 0;
vector<string> ret;
string token="";
while ((pos = input.find(del)) != string::npos)
{
token = input.substr(0, pos);
ret.push_back(token);
input.erase(0, pos + del.length());
}
ret.push_back(input);
return ret;
}
int main()
{
string s = "bet you want some!";
string d = " ";
vector<string> a = split(s, d);
for (string b : a)
cout << b << "\n";
}
>> 출력:
bet
you
want
some!