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

C++ Boost Uuid超詳細講解

 更新時間:2022年12月05日 08:52:58   作者:無水先生  
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱

一、說明

Boost.Uuid 為 UUID 提供生成器。 UUID 是不依賴于中央?yún)f(xié)調(diào)實例的通用唯一標識符。例如,沒有數(shù)據(jù)庫存儲所有生成的 UUID,可以檢查這些 UUID 是否使用了新的 UUID。

UUID 由必須唯一標識組件的分布式系統(tǒng)使用。例如,Microsoft 使用 UUID 來識別 COM 世界中的接口。對于為 COM 開發(fā)的新接口,可以輕松分配唯一標識符。

UUID 是 128 位數(shù)字。存在多種生成 UUID 的方法。例如,計算機的網(wǎng)絡(luò)地址可用于生成 UUID。 Boost.Uuid 提供的生成器基于隨機數(shù)生成器,以避免生成可以追溯到生成它們的計算機的 UUID。

Boost.Uuid 中的所有類和函數(shù)都在命名空間 boost::uuids 中定義。沒有主頭文件可以訪問所有這些文件。

二、Boost.Uuid庫示例和代碼

示例 65.1。使用 boost::uuids::random_generator 生成隨機 UUID

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <iostream>
using namespace boost::uuids;
int main()
{
  random_generator gen;
  uuid id = gen();
  std::cout << id << '\n';
}

Example 65.1

示例 65.1 生成一個隨機的 UUID。它使用在 boost/uuid/uuid_generators.hpp 中定義的類 boost::uuids::random_generator。此頭文件提供對 Boost.Uuid 提供的所有生成器的訪問。

boost::uuids::random_generator 的使用方式類似于 C++11 標準庫或 Boost.Random 中的生成器。此類重載 operator() 以生成隨機 UUID。

UUID 的類型是 boost::uuids::uuid。 boost::uuids::uuid 是一個 POD – 普通的舊數(shù)據(jù)。沒有生成器,您無法創(chuàng)建 boost::uuids::uuid 類型的對象。但是,它是一種精確分配 128 位的精簡類型。該類在 boost/uuid/uuid.hpp 中定義。

boost::uuids::uuid 類型的對象可以寫入標準輸出流。但是,您必須包含 boost/uuid/uuid_io.hpp。此頭文件提供重載運算符以將 boost::uuids::uuid 類型的對象寫入輸出流。

示例 65.1 顯示如下所示的輸出:0cb6f61f-be68-5afc-8686-c52e3fc7a50d。使用破折號是顯示 UUID 的首選方式。

示例 65.2。 boost::uuids::uuid 的成員函數(shù)

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <iostream>
using namespace boost::uuids;
int main()
{
  random_generator gen;
  uuid id = gen();
  std::cout << id.size() << '\n';
  std::cout << std::boolalpha << id.is_nil() << '\n';
  std::cout << id.variant() << '\n';
  std::cout << id.version() << '\n';
}

boost::uuids::uuid 只提供了幾個成員函數(shù),其中一些在示例 65.2 中有介紹。 size() 以字節(jié)為單位返回 UUID 的大小。因為 UUID 總是 128 位,所以 size() 總是返回 16。如果 UUID 是 nil UUID,is_nil() 返回 true。零 UUID 是 00000000-0000-0000-0000-000000000000。 variant() 和 version() 指定 UUID 的種類及其生成方式。在示例 65.2 中,variant() 返回 1,這意味著 UUID 符合 RFC 4122。version() 返回 4,這意味著 UUID 是由隨機數(shù)生成器創(chuàng)建的。

boost::uuids::uuid 還提供成員函數(shù),如 begin()、end() 和 swap()。

示例 65.3。來自 Boost.Uuid 的生成器

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <iostream>
using namespace boost::uuids;
int main()
{
  nil_generator nil_gen;
  uuid id = nil_gen();
  std::cout << std::boolalpha << id.is_nil() << '\n';
  string_generator string_gen;
  id = string_gen("CF77C981-F61B-7817-10FF-D916FCC3EAA4");
  std::cout << id.variant() << '\n';
  name_generator name_gen(id);
  std::cout << name_gen("theboostcpplibraries.com") << '\n';
}

Example 65.3

示例 65.3 包含更多來自 Boost.Uuid 的生成器。 nil_generator 生成一個 nil UUID。 is_nil() 僅在 UUID 為 nil 時返回 true。

如果您想使用現(xiàn)有的 UUID,請使用 string_generator。您可以在在線 UUID 生成器工具等網(wǎng)站上生成 UUID。對于示例 65.3 中的 UUID,variant() 返回 0,這意味著 UUID 符合向后兼容的 NCS 標準。 name_generator 用于在命名空間中生成 UUID。

使用 string_generator 時請注意 UUID 的拼寫。您可以傳遞不帶破折號的 UUID,但如果您使用破折號,則它們必須位于正確的位置。忽略大小寫(大寫或小寫)。

示例 65.4。轉(zhuǎn)換為字符串

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/lexical_cast.hpp>
#include <string>
#include <iostream>
using namespace boost::uuids;
int main()
{
  random_generator gen;
  uuid id = gen();
  std::string s = to_string(id);
  std::cout << s << '\n';
  std::cout << boost::lexical_cast<std::string>(id) << '\n';
}

Boost.Uuid 提供函數(shù) boost::uuids::to_string() 和 boost::uuids::to_wstring() 將 UUID 轉(zhuǎn)換為字符串(參見示例 65.4)。也可以使用 boost::lexical_cast() 進行轉(zhuǎn)換。

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

相關(guān)文章

  • Qt?QTableWidget?實現(xiàn)行選中及行懸浮高亮效果

    Qt?QTableWidget?實現(xiàn)行選中及行懸浮高亮效果

    使用Qt開發(fā)中,實現(xiàn)表格的行選中和懸浮高亮效果是一個常見需求,但Qt自帶的方法無法直接實現(xiàn),解決方案是通過子類化QStyledItemDelegate并重寫其paint函數(shù)來定制化繪制過程,本文給大家介紹Qt?QTableWidget?實現(xiàn)行選中及行懸浮高亮效果,感興趣的朋友一起看看吧
    2024-09-09
  • 一文詳解C++的程序流程控制

    一文詳解C++的程序流程控制

    這篇文章主要介紹了一文詳解C++的程序流程控制,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • C語言代碼實現(xiàn)井字棋游戲

    C語言代碼實現(xiàn)井字棋游戲

    這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++ RTTI與4種類型轉(zhuǎn)換的深入理解

    C++ RTTI與4種類型轉(zhuǎn)換的深入理解

    這篇文章主要給大家介紹了關(guān)于C++ RTTI與4種類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C語言實現(xiàn)Floyd算法

    C語言實現(xiàn)Floyd算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)Floyd算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++空類及沒有成員變量的類的大小實例分析

    C++空類及沒有成員變量的類的大小實例分析

    這篇文章主要介紹了C++空類及沒有成員變量的類的大小,對于初學者更好的了解C++的指針及類的存儲結(jié)構(gòu)很有幫助,需要的朋友可以參考下
    2014-07-07
  • C++實現(xiàn)LeetCode(76.最小窗口子串)

    C++實現(xiàn)LeetCode(76.最小窗口子串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(76.最小窗口子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C/C++的各種字符串函數(shù)你知道幾個

    C/C++的各種字符串函數(shù)你知道幾個

    這篇文章主要為大家詳細介紹了C/C++的各種字符串函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 基于Matlab實現(xiàn)水波倒影特效的制作

    基于Matlab實現(xiàn)水波倒影特效的制作

    這篇文章主要介紹了如何利用Matlab制作出水波倒影的特效,文中的示例代碼講解詳細,對我們學習Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • Qt網(wǎng)絡(luò)編程之TCP通信及常見問題

    Qt網(wǎng)絡(luò)編程之TCP通信及常見問題

    這篇文章主要為大家詳細介紹了Qt網(wǎng)絡(luò)編程之TCP通信及常見問題,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

铁力市| 儋州市| 娄底市| 侯马市| 伊春市| 浦东新区| 道孚县| 商丘市| 绥宁县| 株洲县| 广元市| 望江县| 正安县| 香港| 绵竹市| 武夷山市| 遂昌县| 紫金县| 文登市| 瑞丽市| 同江市| 肇州县| 高唐县| 肇庆市| 浠水县| 津市市| 自贡市| 巫山县| 潜江市| 明光市| 曲周县| 舟曲县| 文昌市| 周宁县| 凤庆县| 邵东县| 金秀| 安徽省| 革吉县| 灵璧县| 巧家县|