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

 

빈 토큰도 구해진 것을 볼 수 있다 : )

참여해 주신 볼랜드(코드기어? 엠바카데로?) 유저분에게 심심한 감사를 표하면서 끝내겠다 (__)



PS. 유니코드 일 경우 typedef tokenizer<char_separator<wchar_t>, wstring::const_iterator, wstring> TOKC; 와 같이 선언하는것이 편리하다

조회 수 :
15545
등록일 :
2009.06.10
16:10:59 (*.149.217.155)
엮인글 :
http://www.lunapiece.net/3870/99c/trackback
게시글 주소 :
http://www.lunapiece.net/3870
문서 첨부 제한 : 0Byte/ 10.00MB
파일 제한 크기 : 10.00MB (허용한 확장자만 첨부할 수 있습니다.(관리자는 제외) : *.*)
옵션 :
:
:
:
:
List of Articles
번호 제목 글쓴이 날짜 조회 수
33 C++11 lambda 간단사용법과 성능비교. file Lyn 2012-01-29 118
32 Boost 빌드 방법 [1] Lyn 2012-01-13 401
31 DLLMain에서 하지 말아야 할것. Lyn 2012-01-12 539
30 새해다 ... Lyn 2011-12-31 538
29 Trac, Mantis, Redmine + SVN 소스 한글 깨짐 Lyn 2011-12-20 867
28 MultiMedia Timer 의 Timer 해상도의 비밀 file Lyn 2011-12-14 944
27 Intel Cilk plus And SampleCode - Parallel Programming file Lyn 2011-11-22 1194
26 Visaul Studio Exception 발생시 해결방법 file Lyn 2011-11-09 2008
25 [Boost 살펴보기] 9. noncopyable Lyn 2011-09-14 3242
24 Mysql 툴 Lyn 2011-03-30 9783
23 [개인자료] 프로그램 만들때 무조건 해야하는것.. Lyn 2011-01-25 11540
22 사용중인 FireFox 플러그인. Lyn 2010-05-18 12840
21 Google C++ Coding Style - 번역중 Lyn 2010-03-28 14089
20 Boost 에서 자기 자신의 shared_ptr 리턴하기 file Lyn 2010-03-01 13348
19 [잡설] 앱스토어의 유행. 프로그래머에겐 과연? Lyn 2010-02-19 13326
18 [잡설]델파이 / C++ Builder 하는 사람들의 문제점. Lyn 2010-02-06 13951
17 [개인자료] 윈도우 재설치 후 설치 하는 프로그램 Lyn 2010-01-03 13510
16 Compare, Merge 툴 간의 비교. - 작성중 [1] Lyn 2009-12-07 14451
15 C++ new 연산자의 진실 file Lyn 2009-08-18 16180
» [Boost 살펴보기] 8. Tokenizer file Lyn 2009-06-10 15545

SITE LOGIN :)