본문 바로가기
C++ 알고리즘/풀다가 알게된 것

split 메서드 구현하기

by hoshi03 2024. 8. 27.

c++에는 split 메서드가 없다

#include <bits/stdc++.h>
#include <iostream>

using namespace std;

vector<string> split(const string& input, string delimiter) {
    vector<string> result;
    auto start = 0;
    auto end = input.find(delimiter);
    while (end != string::npos) {
        result.push_back(input.substr(start, end - start));
        start = end + delimiter.size();
        end = input.find(delimiter, start);
    }
    result.push_back(input.substr(start));
    return result;
}

int main()
{
    string s = "apple,banana,temp";

    auto tmp = split(s, ",");
    for(string x : tmp){
        cout << x << " ";
    }
}

 

자를 문자열과 split 기준이 될 문자열을 인자로 받는 메서드를 작성하고

결과를 기록할 문자열을 만든다

일단 전체 문자열에서 구분자의 포지션을 찾고

결과에 시작, 구분자 - 시작 범위 문자열을 넣어준다

시작점을 찾은 문자열 시작 위치 + 구분자 크기로 해주고

계속 찾으면서 나온 결과를 추가해서 반환한다