2016-09-27 1 views
0

구조체에서 여러 문자열을 읽은 다음 부스트 토크 나이저을 사용하여 토큰 화해야합니다. 기본적으로 내가 현재 가지고있는 것은 다음과 같습니다.부스트 토크 나이저 재 지정

typedef boost::tokenizer<boost::char_separator<char> > Tokenizer; 
boost::char_separator<char> sep(";"); 

Tokenizer tok1(str1, sep); 
... 

Tokenizer tok2(str2, sep); 
... 

Tokenizer tok3(str3, sep); 
..... 

매번 새로운 토크 나이저 개체를 생성합니다. Tokenizer 객체를 하나만 사용하여이 작업을 수행 할 수 있습니까? 이 같은 것 :

Tokenizer tok(str1, sep); 
... 

// tok(str2, sep); or tok = Tokenizer(str2, sep) 

추신 : 나는 위의 두 가지를 모두 시도했지만 실패했습니다.

답변

1

assign 멤버 함수를 사용하여 새 토큰 소스를 할당합니다.

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

void test(boost::tokenizer<>& tok) 
{ 
    for(boost::tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){ 
     std::cout << *beg << " : "; 
    } 
    std::cout << '\n'; 
} 

int main() 
{ 
    std::string s = "This is, a test"; 
    boost::tokenizer<> tok(s); 

    test(tok); 

    tok.assign(s); 
    test(tok); 

    tok.assign(s); 
    test(tok); 
} 

예상 출력 :

This : is : a : test : 
This : is : a : test : 
This : is : a : test : 
관련 문제