• Home
  • About
    • 코드좀비 photo

      코드좀비

      An amazing website.

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

C++ 파싱 구현하기. (split 구현하기)

02 Apr 2020

Reading time ~1 minute

원래는 문자열 처리 관련해서 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 로 바꿔줍시다.

그러면, 구분자 뒤에서부터, 원하는 지점까지 성공적으로 받아 올 수 있어요.



C++studysplit Share Tweet +1