[Boost]一種簡單的批分字串的辦法 (轉)

amyz發表於2007-11-13
[Boost]一種簡單的批分字串的辦法 (轉)[@more@]

一個小技巧,權當對Great Boost的致敬。

批分的具體規則:

電話號碼或者其他的什麼,都可以以下列四種符號分隔:

u  分號,如:1391067;62963517,或者1391067;62963;。

u  逗號,如:1391067,62963517,或者1391067,62963,。

u  中文分號,如:1391067;62963,或者1391067;629637;。

u  中文逗號,如:1391067,62963,或者1391067,629617,。

也可以混合這四種符號,如:

1391067,6617;62980;1234,5678;9900,0099;

。諸如此類。

 :namespace prefix = o ns = "urn:schemas--com::office" />

這種方式的批分,可以用boost庫的tokenizer很容易的做到。

批分程式碼:

#include
#include

...

std::string _sTokenFaxNumber("629780;010620,01091293;1234,5678;8989"); 

  typedef boost::tokenizer<:char_separator> >

  tokenizer;

 

  // 批發的分隔符號,列舉各種符號:

  boost::char_separator sep(";,;,");

  tokenizer tokens(_sTokenFaxNumber, sep);

  tokenizer::const_iterator itBegin  = tokens.begin();

  tokenizer::const_iterator itEnd  = tokens.end();

  tokenizer::iterator  tok_iter;

  for (tok_iter = itBegin;

   tok_iter != itEnd;

   ++tok_iter)

  {

  _bstr_t bstrSingleFax((*tok_iter).c_str());

  }

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982081/,如需轉載,請註明出處,否則將追究法律責任。

相關文章