最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ Boost Tokenizer使用詳細(xì)講解

 更新時(shí)間:2022年11月11日 16:09:26   作者:無水先生  
Boost是為C++語言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱

介紹

庫(kù) Boost.Tokenizer 允許您通過將某些字符解釋為分隔符來迭代字符串中的部分表達(dá)式。使用 boost::tokenizer 迭代字符串中的部分表達(dá)式

示例一

使用 boost::tokenizer 迭代字符串中的部分表達(dá)式

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
  std::string s = "Boost C++ Libraries";
  tokenizer tok{s};
  for (tokenizer::iterator it = tok.begin(); it != tok.end(); ++it)
    std::cout << *it << '\n';
}

Boost.Tokenizer 在 boost/tokenizer.hpp 中定義了一個(gè)名為 boost::tokenizer 的類模板。它期望一個(gè)標(biāo)識(shí)連貫表達(dá)式的類作為模板參數(shù)。示例 10.1 使用了 boost::char_separator 類,它將空格和標(biāo)點(diǎn)符號(hào)解釋為分隔符。

必須使用 std::string 類型的字符串初始化標(biāo)記器。使用成員函數(shù) begin() 和 end(),可以像容器一樣訪問標(biāo)記器。用于初始化標(biāo)記器的字符串的部分表達(dá)式可通過迭代器獲得。部分表達(dá)式的計(jì)算方式取決于作為模板參數(shù)傳遞的類的類型。

因?yàn)?boost::char_separator 默認(rèn)將空格和標(biāo)點(diǎn)符號(hào)解釋為分隔符,所以示例 10.1 會(huì)顯示 Boost、C、+、+ 和庫(kù)。 boost::char_separator 使用 std::isspace() 和 std::ispunct() 來識(shí)別分隔符。 Boost.Tokenizer 區(qū)分應(yīng)該顯示的分隔符和應(yīng)該抑制的分隔符。默認(rèn)情況下,空格被抑制并顯示標(biāo)點(diǎn)符號(hào)。

示例二

初始化 boost::char_separator 以適應(yīng)迭代

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
  std::string s = "Boost C++ Libraries";
  boost::char_separator<char> sep{" "};
  tokenizer tok{s, sep};
  for (const auto &t : tok)
    std::cout << t << '\n';
}

為了防止標(biāo)點(diǎn)符號(hào)被解釋為分隔符,請(qǐng)?jiān)趯?boost::char_separator 對(duì)象傳遞給分詞器之前對(duì)其進(jìn)行初始化。

boost::char_separator 的構(gòu)造函數(shù)一共接受三個(gè)參數(shù),但只需要第一個(gè)。第一個(gè)參數(shù)描述被抑制的各個(gè)分隔符。示例 10.2 與示例 10.1 一樣,將空格視為分隔符。

第二個(gè)參數(shù)指定應(yīng)顯示的分隔符。如果省略此參數(shù),則不顯示分隔符,程序現(xiàn)在將顯示 Boost、C++ 和庫(kù)。

示例三

使用 boost::char_separator 模擬默認(rèn)行為

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
  std::string s = "Boost C++ Libraries";
  boost::char_separator<char> sep{" ", "+"};
  tokenizer tok{s, sep};
  for (const auto &t : tok)
    std::cout << t << '\n';
}

如果將加號(hào)作為第二個(gè)參數(shù)傳遞,則示例 10.3 的行為類似于示例 10.1。

第三個(gè)參數(shù)決定是否顯示空的部分表達(dá)式。如果連續(xù)找到兩個(gè)分隔符,則對(duì)應(yīng)的部分表達(dá)式為空。默認(rèn)情況下,不顯示這些空表達(dá)式。使用第三個(gè)參數(shù),可以更改默認(rèn)行為。

示例四

初始化 boost::char_separator 以顯示空的部分表達(dá)式

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
  std::string s = "Boost C++ Libraries";
  boost::char_separator<char> sep{" ", "+", boost::keep_empty_tokens};
  tokenizer tok{s, sep};
  for (const auto &t : tok)
    std::cout << t << '\n';
}

示例 10.4 顯示了兩個(gè)額外的空部分表達(dá)式。第一個(gè)位于兩個(gè)加號(hào)之間,而第二個(gè)位于第二個(gè)加號(hào)和后面的空格之間。

示例五

具有寬字符串的 Boost.Tokenizer

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::char_separator<wchar_t>,
    std::wstring::const_iterator, std::wstring> tokenizer;
  std::wstring s = L"Boost C++ Libraries";
  boost::char_separator<wchar_t> sep{L" "};
  tokenizer tok{s, sep};
  for (const auto &t : tok)
    std::wcout << t << '\n';
}

Example

示例 10.5 迭代一個(gè) std::wstring 類型的字符串。為了支持此字符串類型,必須使用附加模板參數(shù)初始化標(biāo)記器。類 boost::char_separator 也必須用 wchar_t 初始化。

除了 boost::char_separator 之外,Boost.Tokenizer 還提供了兩個(gè)額外的類來識(shí)別部分表達(dá)式。

示例六

使用 boost::escaped_list_separator 解析 CSV 文件

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::escaped_list_separator<char>> tokenizer;
  std::string s = "Boost,\"C++ Libraries\"";
  tokenizer tok{s};
  for (const auto &t : tok)
    std::cout << t << '\n';
}

boost::escaped_list_separator 用于讀取以逗號(hào)分隔的多個(gè)值。這種格式通常稱為 CSV(逗號(hào)分隔值)。 boost::escaped_list_separator 還處理雙引號(hào)和轉(zhuǎn)義序列。因此,示例 10.6 的輸出是 Boost 和 C++ 庫(kù)。

提供的第二個(gè)類是 boost::offset_separator,它必須被實(shí)例化。相應(yīng)的對(duì)象必須作為第二個(gè)參數(shù)傳遞給 boost::tokenizer 的構(gòu)造函數(shù)。

示例七

使用 boost::offset_separator 迭代部分表達(dá)式

#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
int main()
{
  typedef boost::tokenizer<boost::offset_separator> tokenizer;
  std::string s = "Boost_C++_Libraries";
  int offsets[] = {5, 5, 9};
  boost::offset_separator sep{offsets, offsets + 3};
  tokenizer tok{s, sep};
  for (const auto &t : tok)
    std::cout << t << '\n';
}

boost::offset_separator 指定字符串中各個(gè)部分表達(dá)式結(jié)束的位置。示例 10.7 指定第一個(gè)部分表達(dá)式在 5 個(gè)字符后結(jié)束,第二個(gè)在另外 5 個(gè)字符后結(jié)束,第三個(gè)在以下 9 個(gè)字符后結(jié)束。輸出將是 Boost、_C++_ 和庫(kù)。

到此這篇關(guān)于C++ Boost Tokenizer使用詳細(xì)講解的文章就介紹到這了,更多相關(guān)C++ Boost Tokenizer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言代碼實(shí)現(xiàn)三子棋游戲

    C語言代碼實(shí)現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言代碼實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • EasyC++編寫頭文件

    EasyC++編寫頭文件

    這篇文章主要介紹了C++編寫頭文件,在一個(gè)C++程序中,只包含兩類文件——.cpp文件和.h文件。其中,.cpp文件被稱作C++源文件,里面放的都是C++的源代碼;而.h文件則被稱作C++頭文件,里面放的也是C++的源代碼,感興趣的小伙伴一起來看下面文章的詳細(xì)介紹吧
    2021-12-12
  • C++實(shí)現(xiàn)猜牌小游戲

    C++實(shí)現(xiàn)猜牌小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)猜牌小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++基于先序、中序遍歷結(jié)果重建二叉樹的方法

    C++基于先序、中序遍歷結(jié)果重建二叉樹的方法

    這篇文章主要介紹了C++基于先序、中序遍歷結(jié)果重建二叉樹的方法,結(jié)合實(shí)例形式分析了基于C++構(gòu)建二叉樹的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C語言詳細(xì)講解#error與#line如何使用

    C語言詳細(xì)講解#error與#line如何使用

    這篇文章主要介紹了C語言中#error與#line如何使用,#error與#line雖然在語言里面用的比較少,但是還是有必要了解一下
    2022-04-04
  • C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例

    C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例

    這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C語言入門篇--函數(shù)及數(shù)組用法

    C語言入門篇--函數(shù)及數(shù)組用法

    本篇文章是c語言基礎(chǔ)篇,主要為大家介紹了C語言的函數(shù)與數(shù)組,每個(gè)函數(shù)本質(zhì)上都實(shí)現(xiàn)一個(gè)最小的功能,而main函數(shù)只負(fù)責(zé)調(diào)用函數(shù),實(shí)現(xiàn)代碼的核心邏輯,提高代碼的可維護(hù)性
    2021-08-08
  • C++深入詳解單例模式與特殊類設(shè)計(jì)的實(shí)現(xiàn)

    C++深入詳解單例模式與特殊類設(shè)計(jì)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了C++單例模式和特殊類的設(shè)計(jì),單例模式這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-06-06
  • 基于C語言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    基于C語言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言數(shù)據(jù)結(jié)構(gòu)不掛科指南之棧&隊(duì)列&數(shù)組詳解

    C語言數(shù)據(jù)結(jié)構(gòu)不掛科指南之棧&隊(duì)列&數(shù)組詳解

    自考重點(diǎn)、期末考試必過指南,這篇文章讓你理解什么是棧、什么是隊(duì)列、什么是數(shù)組。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-09-09

最新評(píng)論

肇州县| 柳江县| 高州市| 高雄县| 石林| 朝阳市| 临潭县| 古浪县| 攀枝花市| 武邑县| 邹平县| 宝山区| 娱乐| 上虞市| 瑞丽市| 疏勒县| 肃北| 林口县| 榆社县| 芮城县| 吕梁市| 安平县| 彝良县| 灵丘县| 高碑店市| 河曲县| 马关县| 东明县| 临安市| 崇明县| 香格里拉县| 库尔勒市| 仙桃市| 澄迈县| 江津市| 黄浦区| 开封市| 库车县| 安吉县| 井研县| 包头市|