1. 程式人生 > >C++ boost 元件簡介:字串及文字處理

C++ boost 元件簡介:字串及文字處理

字串及文字處理

Boost.Regex

正則表示式是解決大量模式匹配問題的基礎。它們常用於處理大的字串,子串模糊查詢,按某種格式tokenize字串,或者是基於某種規則修改字串。由於C++沒有提供正則表示式支援,使得有些使用者被迫轉向其它支援正則表示式的語言,如Perl, awk, 和 sed。Regex提供了高效和強大的正則表示式支援,基於與STL同樣的前提而設計,這使得它很容易使用。Regex已被即將釋出的Library Technical Report接受。

Regex 的作者是 Dr. John Maddock.

Boost.Spirit

Spirit庫是一個多用途的、遞迴的語法分析器生成框架。有了它,你可以建立命令列分析器,甚至是語言前處理器[1]

。它允許程式設計師直接在C++程式碼裡使用(近似於)EBNF的語法來指定語法規則。分析器非常難寫,對於一個特定的問題,它們很快就變得難於維護和看懂。而Spirit解決了這些問題,而且達到了與手工製作的分析器一樣或幾乎一樣的效能。

[1] Wave庫使用Spirit實現了一個與C++高度一致的前處理器,就證明了這一點。

Spirit 的作者是 Joel de Guzman, 以及一組熟練的程式設計師。

Boost.String_algo

這是一組與字串相關的演算法。包括很多有用的演算法,用於大小寫轉換,空格清除,字串分割,查詢及替換,等等。這組演算法是目前C++標準庫裡已有功能的擴充套件。

String_algo 的作者是 Pavol Droba.

Boost.Tokenizer

這個庫提供了把字元序列分割成記號(token)的方法。通用的語法分析任務包括了在已分割的文字流裡查詢資料。如果可以把字元序列視為多個元素的容器將很有幫助,容器中的元素被執照使用者定義的規則所分割。語法分析就成為了在這些元素上進行操作的單個任務,Tokenizer正好提供了這種功能。使用者可以決定字元序列如何被分割,在使用者請求新的元素時,庫將找出相應的記號。

Tokenizer 的作者是 John Bandela.

來源:Beyond the C++ Standard Library An Introduction to Boos