하나의 문자열을 여러 문자열로 나누는 함수. 여러 언어에서 split 함수를 지원하지만 C++에서는 기본으로 내장되어있지 않기 때문에 직접 구현해야 한다.
string과 stream이 합쳐진 클래스. 사용하기 위해서는 <sstream\>
헤더 파일을 선언해줘야 한다.
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
stringstream ss;
string n;
ss.str("Hello World ABC"); // stringstream 객체에 문자열 삽입
while (ss >> n) // stringstream 객체에 있는 문자열을 공백 직전까지만 잘라서 string 객체인 n에 삽입
cout << n << endl;
}
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
vector<string> split(string input, char dlim)
{
vector<string> result; // 분리한 문자열들을 저장하는 vector
stringstream ss; // stringstream 객체인 ss 선언
string stringBuffer; // stringstream에서 문자열 자를 때마다 임시로 저장하는 변수
ss.str(input); // ss에 문자열 삽입
// ss에서 dlim 직전까지의 문자열을 잘라서 stringBuffer에 저장. ss가 빌 때까지 실행
while (getline(ss, stringBuffer, dlim))
{
result.push_back(stringBuffer); // stringBuffer에 저장된 값을 result에 push_back
}
return result;
}
int main()
{
string str = "ABC DEF GH IJ";
vector<string> result = split(str, ' ');
for (int i = 0; i < result.size(); i++)
cout << result[i] << endl;
}
출력 : ABC
DEF
GH
IJ