Lyn
조회 수 43022 추천 수 0 댓글 0
Atachment
첨부 '2'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

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; 와 같이 선언하는것이 편리하다

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
158 Safe scanf 계열 함수의 함정. 자나깨나 크기조심 secret Lyn 2015.11.17 113
157 KBO 에서 잘나가고 싶으면... secret Lyn 2018.11.19 172
156 asp.net core 3 에서 실행중에 cshtml 파일 변경이 되지 않는 이슈 Lyn 2019.12.17 208
155 Ubuntu Let's Encrypt renew error "requested nginx plugin does not appear to be installed" Lyn 2018.10.07 539
154 [100권프로젝트] 파이썬 동시성 프로그래밍 [3/100] - 브이로그 Lyn 2019.02.09 576
153 [100권프로젝트] 기술서적 100권 읽기 들어갑니다 [0/100] Lyn 2018.10.15 609
152 심심해서 만들어본 폰 요금 계산기 Lyn 2019.08.18 609
151 새해복 많이받으세요 Lyn 2019.02.05 613
150 [100권프로젝트] Node.js 마이크로 서비스 코딩공작소 [5/100] - 브이로그 Lyn 2019.02.26 634
149 [100권프로젝트] 스타트 스프링 부트 [4/100] - 브이로그 Lyn 2019.02.23 643
148 [프로그래밍Tip] C# 소켓 버퍼에 있는 문자열을 확인해보자 Lyn 2019.03.06 643
147 [100권프로젝트] 블로그가 아닌 브이로그로 전환합니다. Lyn 2019.01.30 647
146 [질문해결] vue.js 프로그램이 실행되지 않아요. Lyn 2019.03.06 647
145 [100권프로젝트] 서버/인프라 엔지니어를 위한 DevOps [9/100] Lyn 2019.08.18 671
144 [100권프로젝트] 모두의 딥러닝 [2/100] - 브이로그 Lyn 2019.02.01 682
143 오랫만에 인증서 업데이트와 서버 이전 Lyn 2018.07.07 683
142 [100권프로젝트] 프로그래밍의 정석 [10/100] - 브이로그 Lyn 2019.08.18 687
141 요즘 공부를 안하니 쓸게 없네요 Lyn 2018.06.02 737
140 [100권프로젝트] 프로그래밍의 정석 - 프로그래머가 반드시 알아야할 101가지 원리원칙 [7/100] file Lyn 2019.01.03 746
139 [100권프로젝트] Java 9 모듈 프로그래밍 [5/100] file Lyn 2019.01.03 747
Board Pagination Prev 1 2 3 4 5 6 7 ... 8 Next
/ 8