2017-01-02 44 views
0

我的目的是來標記下輸入字符串%08%04root%08%03KEY%08%05site2%08%11ksk-1483008950879%08%07ID-CERT這樣:如何用百分比標記字符串?

4root 
3KEY 
5site2 
11ksk-1483008950879 
7ID-CERT 

然後我嘗試以下方法:

char_separator<char> sepSig("%08");  
boost::tokenizer< char_separator<char> > tokenSig(inputString, sepSig); 
BOOST_FOREACH (const string& t, tokenSig) 
    log << "Token: " << t << std::endl; 

不幸的是,所有的項目「8」被逮住,與以下劃分:

Token: 4root //OK 
Token: 3KEY //OK 
Token: 5site2 //OK 
Token: 11ksk-14 
Token: 3 
Token: 95 
Token: 79 
Token: 7ID-CERT //OK 

然後,我需要一種方法來從區分項目。我也嘗試了分隔符\08\x08,但是通過這種方式,令牌與整個字符串相同。

+0

這是什麼樣的格式?它類似於URI編碼。 – tadman

+0

創建一個[mcve]。顯示'tokenizer'的定義 – user2079303

+0

它應該是Uri編碼,是的。 關於標記器,我只是在其他答案的建議之後加入了。然後我在問題 –

回答

1

boost::char_separator對待任何的字符作爲分隔符。我看不到一個string_separator - 您可以自己寫,或者用"\t"代替"%08"的每個發生,然後分開\t