Language/C++
C++ :: 문자열 split (string tokenizer)VallistA2014. 6. 1. 14:09
0. 개요
프로젝트 진행중 외부 파일에서 문자열을 긁어올 일이 생겼습니다.
그래서 급한대로 문자열을 자르는 파싱 함수를 만들어서 사용하게 되었는데, 이왕 만들꺼 좋게 만들어서 배포를 하도록 생각을 하였습니다.
1. 소스
/** @brief : 문자열을 잘라주는 함수입니다. @strOrigin : 자를 데이터 @strTok : 분기줄 데이터 @string : 반환형 , 배열로 인자전달 */ string* StringSplit(string strTarget, string strTok) { int nCutPos; int nIndex = 0; string* strResult = new string[D_MAX_ARRAY_SIZE]; while ((nCutPos = strTarget.find_first_of(strTok)) != strTarget.npos) { if (nCutPos > 0) { strResult[nIndex++] = strTarget.substr(0, nCutPos); } strTarget = strTarget.substr(nCutPos+1); } if(strTarget.length() > 0) { strResult[nIndex++] = strTarget.substr(0, nCutPos); } return strResult; }
해당소스에 대해서 설명에 들어가겠습니다.
일단 new가 들어가서 되게 효율적인 소스는 아닙니다만.. 그렇게 많은 영향을 주지는 않습니다.
strTarget은 자신이 타겟으로 받을 문자열 입니다.
"asdfasdfasdf" 이러한 문자열이 들어옵니다.
strTok 은 잘라낼 타겟 문자열들입니다.
char tok[2] = {' ' , ':'};
이렇게 해서 strTok에 넘겨주면 스페이스 바와 : 를 기준으로 다 잘라내서 strResult 에 포인터로 넘어가게 됩니다.
2. 사용법
자 이제 함수에 대해 알아 봤으니 사용법에 대해서 알아봅시다.
사용법은 어렵지 않습니다.
char toki[1] = {' '}; string * tok = StringSplit("I'm go to home");
tok[0] , tok[1] , tok[2] , tok[3]을 한번 출력해봅시다.
출력을 해봄과 동시에 깨닫게 되실 것 입니다.
3. 끝마치며
c#과 java에 있던 string tokenizer를 한번 구현해보았습니다.
어려운 점은 없었습니다.
시간이 되시면 한번 직접 구현해 보는것도 나쁘지 않다고 생각됩니다.
이만 글을 끝내겠습니다 ^^ 감사합니다.
'Language > C++' 카테고리의 다른 글
C++ 11 :: Uniform Initialization (0) | 2014.10.20 |
---|---|
C++ 11 :: Range Based For (0) | 2014.10.20 |
C++ 11 :: Auto (0) | 2014.10.20 |
C++ :: string 문자열 (0) | 2014.06.01 |
C++ :: 절대값을 사용하는 문제 1 (0) | 2014.05.18 |
댓글
VallistA
병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!
자고 싶습니다. ㅠㅠ
Github :: 링크
궁금한점 문의 주시면 답변드리도록 하겠습니다
VISITED
Today :
Total :
Lately Post
Lately Comment