Ⅰ. はじめに
タイトルの通り「C++でUUID(v4)を生成する方法」です。
Ⅱ. やり方(Botanを利用する場合)
1. Botanをインストールする
vcpkg install botan
2. サンプルプログラムを書く
#include <iostream> #include <botan/uuid.h> #include <botan/auto_rng.h> using namespace Botan; int main() { std::unique_ptr<Botan::RandomNumberGenerator> rng(new Botan::AutoSeeded_RNG); auto str = (new Botan::UUID(*rng.get()))->to_string(); std::cout << str << std::endl; // 小文字 std::transform(str.begin(), str.end(), str.begin(), tolower); std::cout << str << std::endl; return 0; }
3. 実行結果
B71A15A6-AA7F-49DA-A6A0-CB05B6C5D17A b71a15a6-aa7f-49da-a6a0-cb05b6c5d17a
Ⅲ. やり方(Windowsのみ)
1. サンプルプログラムを書く
#include <Windows.h> #include <string> #include <iostream> std::string GuidToString(GUID guid) { // https://gist.github.com/vincenthsu/8fab51834e3a04074a57 char guid_cstr[37]; snprintf(guid_cstr, sizeof(guid_cstr), "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); return std::string(guid_cstr); } int main() { GUID guid; auto result = CoCreateGuid(&guid); if (result == S_OK) { std::cout << GuidToString(guid) << std::endl; } return 0; }
2. 実行結果
aa55ef25-d7ea-41cc-91b5-68f3e4e24a1e