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 :

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment