首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Boost.Tokenizer 實現多重分隔符字串分割技巧

     編輯:關於C語言

致敬 Boost 庫的簡潔威力。本文展示使用 boost::tokenizer 輕鬆實現電話號碼等字串的多重分隔符分割。

分割規則

支援四種分隔符(可混合使用):

  • 分號 ;:1391067;62963517 或 1391067;62963;
  • 逗號 ,:1391067,62963517 或 1391067,62963,
  • 中文分號 ;:1391067;62963 或 1391067;629637;
  • 中文逗號 ,:1391067,62963 或 1391067,629617,

混合範例:1391067,6617;62980;1234,5678;9900,0099;

核心程式碼

#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()); // 轉換為 BSTR 供後續使用
    // 處理單一號碼...
}

關鍵點解析

  • char_separator 建構函式接受分隔符字串,自動處理所有字元作為分隔符。
  • tokenizer 為輸入迭代器,支援標準演算法與範圍-based for 迴圈(C++11)。
  • 自動處理連續分隔符、前導/尾隨分隔符產生的空語彙(可透過政策類別自訂)。
  • 無需手寫狀態機或正則表達式,代碼極度簡潔且效能優異。

應用場景

適用於任何需解析多格式分隔符的結構化字串:電話號碼清單、CSV 變體、標籤序列、指令參數等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved