C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[200] [Boost 살펴보기] 8. Tokenizer
Lyn [tohnokanna] 20708 읽음    2009-06-10 16:13
원본출처 : http://lunapiece.net/Article/3870

Tokenizer 는 말 그대로 Token 단위로 문자열을 쪼개는 기능을 한다.
토큰은 사전상의 의미로는 버스탈때 내는 동전 비슷한것 (....) 과 "의미를 갖는 최소한의 문자열" 의 의미를 갖는다. 당연히 여기에서는 후자의 의미다.

c 라이브러리에서는 strtok 이 제공 되지만 이는 thread 에서 사용 할 수 없다(전역변수를 사용 하기 때문에)
VCL 에서는 TStringList 가 비슷 한 기능을 제공 하고 MFC에서도 기억은 안나지만 (...) 비슷한 기능을 제공 한다.

뭐 항상 이야기 하는 거지만 boost 는 플랫폼을 가리지 않는 다는 것 만으로도 충분한 가치가 있다 : )
그럼 간단하게 사용 예제만 보도록 하자.

첫번째 예제 소스 나간다.

#include<boost/tokenizer.hpp>
#include<string>
#include<iostream>

using namespace std;
using namespace boost;

typedef tokenizer<char_separator<char> > TOKC;
int main(int argc, _TCHAR* argv[])
{
    string BorlandUser = "Lyn/Yull/TestCode/Imp//bkyang/4000king/RyuJT/gilgil/esniper/civilian";   
    char_separator<char> sep("/","");   
   
    TOKC tok(BorlandUser, sep);   

    for (TOKC::iterator i = tok.begin(); i != tok.end(); ++i)
    {
        cout << *i << endl;
    }
    return 0;
}

문자열을 '/' 단위로 쪼개기로 하자.

그럼 결과는 1.png 와 같다.

잘 쪼개 졋다. 그런데 한가지 주의해서 볼 점이 있는데 빈 토큰은 나타나지 않는 다는 것이다.
빈 토큰도 살리기 위해서는 separator 의 생성자에 keep_empty_tokens 옵션을 주면 된다.

두번째 예제를 보자
#include<boost/tokenizer.hpp>
#include<string>
#include<iostream>

using namespace std;
using namespace boost;

typedef tokenizer<char_separator<char> > TOKC;
int main(int argc, _TCHAR* argv[])
{
    string BorlandUser = "Lyn/Yull/TestCode/Imp//bkyang/4000king/RyuJT/gilgil/esniper/civilian";   
    char_separator<char> sep("/","", keep_empty_tokens);   
   
    TOKC tok(BorlandUser, sep);   

    for (TOKC::iterator i = tok.begin(); i != tok.end(); ++i)
    {
        cout << *i << endl;
    }
    return 0;
}


2.png 에서 빈 토큰도 구해진 것을 볼 수 있다 : )
참여해 주신 볼랜드(코드기어? 엠바카데로?) 유저분에게 심심한 감사를 표하면서 끝내겠다 (__)
이경문 [gilgil]   2009-08-15 22:39 X
나도 있네, ㅋㅋㅋ
초상권 내셈~ ^^

+ -

관련 글 리스트
200 [Boost 살펴보기] 8. Tokenizer Lyn 20708 2009/06/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.