[C++] C++에서 split() 함수 구현

Doorbals·2023년 1월 5일
0

CPP

목록 보기
6/16

split() 함수

하나의 문자열을 여러 문자열로 나누는 함수. 여러 언어에서 split 함수를 지원하지만 C++에서는 기본으로 내장되어있지 않기 때문에 직접 구현해야 한다.


sstream

string과 stream이 합쳐진 클래스. 사용하기 위해서는 <sstream\> 헤더 파일을 선언해줘야 한다.

  • stringstream 객체는 str() 함수 또는 << 를 사용해 문자열을 삽입한다.
  • 추출을 위해서는 >> 또는 getline() 함수를 사용한다.
#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;
}

split() 함수 구현

#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

👁️‍🗨️ 참조
https://codecollector.tistory.com/999

profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글