문자열 split

istringstream + getline

C++엔 split()이 없어서 sstream으로 직접 토큰화한다

공백 기준 토큰화

#include <sstream>
#include <vector>
#include <string>
using namespace std;

vector<string> split(string s) {
    istringstream iss(s);
    vector<string> result;
    string token;
    while (iss >> token) {
        result.push_back(token);
    }
    return result;
}

특정 구분자 기준 토큰화 (예: 쉼표)

vector<string> split(string s, char delim) {
    istringstream iss(s);
    vector<string> result;
    string token;
    while (getline(iss, token, delim)) {
        result.push_back(token);
    }
    return result;
}

주의사항

구분자가 연속되면 빈 문자열 토큰이 그대로 들어간다. a,,b를 쉼표로 나누면 a, 빈 문자열, b 세 개가 나온다. 빈 토큰을 걸러야 하면 반환 직전에 result.erase(remove(result.begin(), result.end(), ""), result.end())로 제거한다.