C++ 문자열 쪼개기 구현 : split()

Woogle·2023년 5월 14일
0

C++ 공부

목록 보기
28/28
post-thumbnail
  • 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;
}

📄 이미지 출처

profile
노력하는 게임 개발자

2개의 댓글

comment-user-thumbnail
2024년 3월 7일

split 함수 매개변수 delimiter -> delimeter 로 오타 수정 필요해 보입니다.
ret.push_back(token); -> ret.push_back(input); 으로 수정해야 할 것 같습니다.

1개의 답글