欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ Boost Uuid超詳細(xì)講解

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

一、說(shuō)明

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

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

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

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

二、Boost.Uuid庫(kù)示例和代碼

示例 65.1。使用 boost::uuids::random_generator 生成隨機(jī) 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 生成一個(gè)隨機(jī)的 UUID。它使用在 boost/uuid/uuid_generators.hpp 中定義的類(lèi) boost::uuids::random_generator。此頭文件提供對(duì) Boost.Uuid 提供的所有生成器的訪問(wèn)。

boost::uuids::random_generator 的使用方式類(lèi)似于 C++11 標(biāo)準(zhǔn)庫(kù)或 Boost.Random 中的生成器。此類(lèi)重載 operator() 以生成隨機(jī) UUID。

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

boost::uuids::uuid 類(lèi)型的對(duì)象可以寫(xiě)入標(biāo)準(zhǔn)輸出流。但是,您必須包含 boost/uuid/uuid_io.hpp。此頭文件提供重載運(yùn)算符以將 boost::uuids::uuid 類(lèi)型的對(duì)象寫(xiě)入輸出流。

示例 65.1 顯示如下所示的輸出:0cb6f61f-be68-5afc-8686-c52e3fc7a50d。使用破折號(hào)是顯示 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 只提供了幾個(gè)成員函數(shù),其中一些在示例 65.2 中有介紹。 size() 以字節(jié)為單位返回 UUID 的大小。因?yàn)?UUID 總是 128 位,所以 size() 總是返回 16。如果 UUID 是 nil UUID,is_nil() 返回 true。零 UUID 是 00000000-0000-0000-0000-000000000000。 variant() 和 version() 指定 UUID 的種類(lèi)及其生成方式。在示例 65.2 中,variant() 返回 1,這意味著 UUID 符合 RFC 4122。version() 返回 4,這意味著 UUID 是由隨機(jī)數(shù)生成器創(chuàng)建的。

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

示例 65.3。來(lái)自 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 包含更多來(lái)自 Boost.Uuid 的生成器。 nil_generator 生成一個(gè) nil UUID。 is_nil() 僅在 UUID 為 nil 時(shí)返回 true。

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

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

示例 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)換為字符串(參見(jiàn)示例 65.4)。也可以使用 boost::lexical_cast() 進(jìn)行轉(zhuǎn)換。

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

相關(guān)文章

  • C++學(xué)習(xí)之智能指針中的unique_ptr與shared_ptr

    C++學(xué)習(xí)之智能指針中的unique_ptr與shared_ptr

    吃獨(dú)食的unique_ptr與樂(lè)于分享的shared_ptr是C++中常見(jiàn)的兩個(gè)智能指針,本文主要為大家介紹了這兩個(gè)指針的使用以及智能指針使用的原因,希望對(duì)大家有所幫助
    2023-05-05
  • 深入學(xué)習(xí)C語(yǔ)言mmap和shm*的使用方法技巧

    深入學(xué)習(xí)C語(yǔ)言mmap和shm*的使用方法技巧

    本文將詳細(xì)介紹mmap和shm的工作原理,包括它們?cè)趦?nèi)存映射和共享內(nèi)存方面的優(yōu)勢(shì)和適用場(chǎng)景,同時(shí),文章還會(huì)分享一些使用mmap和shm的技巧和經(jīng)驗(yàn),以幫助讀者優(yōu)化并提高程序性能,使你能夠在實(shí)際項(xiàng)目中更好地利用這些技術(shù)來(lái)加速數(shù)據(jù)共享和多線程應(yīng)用
    2023-10-10
  • C語(yǔ)言中浮點(diǎn)數(shù)的精度丟失問(wèn)題解決

    C語(yǔ)言中浮點(diǎn)數(shù)的精度丟失問(wèn)題解決

    大家好,本篇文章主要講的是C語(yǔ)言中浮點(diǎn)數(shù)的精度丟失問(wèn)題解決,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語(yǔ)言線性表之雙鏈表詳解

    C語(yǔ)言線性表之雙鏈表詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言線性表之雙鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++中求旋轉(zhuǎn)數(shù)組中的最小數(shù)字(經(jīng)典面試題)

    C++中求旋轉(zhuǎn)數(shù)組中的最小數(shù)字(經(jīng)典面試題)

    這篇文章主要介紹了C++中求旋轉(zhuǎn)數(shù)組中的最小數(shù)字(經(jīng)典面試題)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 全面了解#pragma once與 #ifndef的區(qū)別

    全面了解#pragma once與 #ifndef的區(qū)別

    下面小編就為大家?guī)?lái)一篇全面了解#pragma once與 #ifndef的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • C語(yǔ)言之函數(shù)遞歸的實(shí)現(xiàn)

    C語(yǔ)言之函數(shù)遞歸的實(shí)現(xiàn)

    本文主要介紹了C語(yǔ)言之函數(shù)遞歸的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C語(yǔ)言深入講解內(nèi)存操作問(wèn)題

    C語(yǔ)言深入講解內(nèi)存操作問(wèn)題

    程序運(yùn)行的目的是為了得到特定的結(jié)果,計(jì)算機(jī)本質(zhì)上是用于計(jì)算的,既然是用于計(jì)算,就需要參與計(jì)算的數(shù)據(jù),那這些數(shù)據(jù)就存儲(chǔ)在內(nèi)存中,計(jì)算之前參與運(yùn)算的數(shù)據(jù)以及運(yùn)算之后得到的數(shù)據(jù),都存儲(chǔ)在內(nèi)存中,所以對(duì)內(nèi)存操作的掌握就尤為重要,下面我們一起來(lái)看看
    2022-04-04
  • C語(yǔ)言實(shí)現(xiàn)自動(dòng)售貨機(jī)

    C語(yǔ)言實(shí)現(xiàn)自動(dòng)售貨機(jī)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)自動(dòng)售貨機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++繼承模式詳解

    C++繼承模式詳解

    繼承機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有的特性基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能,這樣產(chǎn)生新的類(lèi),稱(chēng)作是派生類(lèi)。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層析結(jié)構(gòu),體現(xiàn)了由簡(jiǎn)單到復(fù)雜的認(rèn)知過(guò)程。繼承是類(lèi)設(shè)計(jì)層次的復(fù)用。
    2021-12-12

最新評(píng)論