원래는 문자열 처리 관련해서 C++이 빈약해서
파이썬을 서브언어로 공부 해볼려고 했는데
그냥 서브언어를 익히는 것 보다는
차라리 직접 파싱해주는 함수를 만들어주자 생각하게 되어
만들었습니다..
(물론 있지만, char로 변형해야 합니다. )
코드입니다.
vector<string> parse(string a, char split) {
vector<string > p;
int bef = 0;
for (int i = 0; i < a.size(); i++) {
if (a.at(i) == split ) {
if(bef != i )
p.push_back(a.substr(bef, i-bef));
bef = i+1;
}
}
if (bef != a.size()) {
p.push_back(a.substr(bef, a.size() - bef));
}
return p;
}
구현 방법은,
예시를 통해 알아보도록 하겠습니다.
abcd:efg:ij:a
이러한 스트링을 ‘:’ 를 기준으로 파싱 한다고 생각 해 보겠습니다.
우선 스트링에서 ‘:’ 가 나올떄 까지 돌아줍니다.
그러면 abcd 까지 돌고, i는 5겠죠.
그러면 substr을 사용해서, bef 부터, i-bef 개 까지 추출해서 스트링 벡터에 넣어줍니다.
그러면, abcd 가 들어가겠죠.
그러고 나서, bef를 i+1 로 바꿔줍시다.
그러면, 구분자 뒤에서부터, 원하는 지점까지 성공적으로 받아 올 수 있어요.