電話號碼或代碼常以分號、逗號、中文分號、中文逗號等混合分隔,例如:
1391067,6617;62980;1234,5678;9900,0099;
需將此類字串依四種分隔符一次切割,傳統 strtok 或手寫解析較繁瑣,Boost.Tokenizer 提供極簡潔解法。
#include <boost/tokenizer.hpp>
#include <string>
std::string _sTokenFaxNumber("629780;010620,01091293;1234,5678;8989");
// 定義分隔符集合
boost::char_separator<char> sep(";,;,");
// 建立 tokenizer
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
tokenizer tokens(_sTokenFaxNumber, sep);
// 迭代取得各欄位
for (tokenizer::iterator it = tokens.begin(); it != tokens.end(); ++it)
{
_bstr_t bstrSingleFax((*it).c_str()); // 轉為所需型別
// 處理單一號碼...
}
此技巧致敬 Boost 庫的強大與靈活。