最終更新日時:
が更新

履歴 編集

オブジェクトにユニークなIDを付ける

COMや分散環境において、オブジェクトにユニークなIDが必要になることがある。Boost Uuid Libraryは、UUID(Universally unique identifier)の型とジェネレータを提供するライブラリである。

インデックス

ランダムなUUIDを生成する

boost::uuids::random_generatorは、ランダムなUUIDを生成する関数オブジェクトである。

random_generatorを使用するには、<boost/uuid/uuid_generators.hpp>をインクルードする。

#include <iostream>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/uuid_generators.hpp> // random_generator

using namespace boost::uuids;

int main()
{
    // ランダムにユニークIDを生成
    const uuid id1 = random_generator()();
    const uuid id2 = random_generator()();

    std::cout << id1 << std::endl;
    std::cout << id2 << std::endl;
}

実行結果の例:

d3e0fe51-8078-4a9b-a353-2485a47e0ffe
c5bcb847-5750-4388-ae8d-092e239ef2e6

UUIDを文字列に変換する

boost::uuids::uuid型は、operator<<()出力ストリーム演算子を持っているので、boost::lexical_cast()を使用して文字列に変換できる。

#include <iostream>
#include <string>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/lexical_cast.hpp>

using namespace boost::uuids;

int main()
{
    // ランダムにユニークIDを生成
    const uuid id = random_generator()();

    // 文字列に変換
    const std::string result = boost::lexical_cast<std::string>(id);

    std::cout << result << std::endl;
}

実行結果の例:

7dad652f-fa94-4f9c-a17b-357551438095