코딩테스트
c++ Split 함수 구현하기
코앤미
2023. 8. 19. 11:45
getline은 문자열의 delimiter 를 추가하여 문자열의 종료를 구분짓는 메소드이다.
기존의 문자열을 '\0' 혹은 '\n' 과 같이 줄바꿈, 혹은 공백에 의해 String의 종료를 감지하지만, 여기서 특정 char 타입 값을 추가하여 추가로 구분 지을 수 있다. 이를 통해 C++ 에서 문자열 Split함수를 쉽게 구현할 수 있다.
코드 예시
#include<iostream>
#include<sstream>
#include<vector>
#include<iostream>
using namespace std;
vector<int> split(string str) { //str= "ab:cd:eh"
stringstream ss(str);
vector<int> v;
while (getline(ss, str, ':')) { // 주의! 구분자는 string이 아닌 char 타입 이어야한다.
v.push_back(str);// "ab", "cd", "ed" 가 각각 들어가게 된다. 맨 마지막 eh는 '\n' 으로 인해 구분되어져 잘리는 것
}
}
주의할 점은, delimiter의 타입이 char 로 들어와야한다는 점이다.
ex) "ab<>cd<>ef" 에서, "<>"를 구분자로 지정하는 것은 불가하다..! 이경우 '<' 를 구분자로 지정하고, 받아 들여지는 ">cd" 에서 '>'를 제외하는 등의 방법을 사용할 수 도 있을 것이다.