- C++ STL에는 문자열을 분할하는 함수를 공식적으로 지원하지 않는다.
- C++에서 문자열을 분할하려면 직접 함수를 구현해야 한다.
📄 string 클래스만으로 구현
- find() 함수를 사용하여 구분자의 위치를 찾고, substr() 함수를 사용하여 문자열을 분할한다.
- 분할한 문자를 vector에 담아 반환한다.
#include <vector>
#include <string>
using namespace std;
vector<string> split(string input, string delimiter)
{
vector<string> ret;
int pos = 0;
string token = "";
while ((pos = input.find(delimiter)) != string::npos)
{
token = input.substr(0, pos);
ret.push_back(token);
input.erase(0, pos + delimiter.length());
}
ret.push_back(input);
return ret;
}
📄 stringstream 클래스로 구현
- getline() 함수를 사용하여 구분자를 찾아 문자열을 분할해 vector에 담아 반환한다.
#include <vector>
#include <string>
#include <sstream>
using namespace std;
vector<string> splitString(const string& str, char delimiter)
{
vector<string> ret;
string token;
stringstream ss(str);
while (getline(ss, token, delimiter))
{
ret.push_back(token);
}
return ret;
}
📄 이미지 출처
split 함수 매개변수 delimiter -> delimeter 로 오타 수정 필요해 보입니다.
ret.push_back(token); -> ret.push_back(input); 으로 수정해야 할 것 같습니다.