如何在不使用Boost库的情况下在c++中生成UUID?

2022-05-27 00:00:00 uuid c++
我想为我的应用程序生成UUID,以区分我的应用程序的每个安装。我希望在没有Boost库支持的情况下使用C++生成此UUID。如何使用其他开源库生成UUID?

注意:我的平台是WINDOWS


解决方案

如果您使用的是现代的C++,则可以这样做。

#include <random>
#include <sstream>

namespace uuid {
    static std::random_device              rd;
    static std::mt19937                    gen(rd());
    static std::uniform_int_distribution<> dis(0, 15);
    static std::uniform_int_distribution<> dis2(8, 11);

    std::string generate_uuid_v4() {
        std::stringstream ss;
        int i;
        ss << std::hex;
        for (i = 0; i < 8; i++) {
            ss << dis(gen);
        }
        ss << "-";
        for (i = 0; i < 4; i++) {
            ss << dis(gen);
        }
        ss << "-4";
        for (i = 0; i < 3; i++) {
            ss << dis(gen);
        }
        ss << "-";
        ss << dis2(gen);
        for (i = 0; i < 3; i++) {
            ss << dis(gen);
        }
        ss << "-";
        for (i = 0; i < 12; i++) {
            ss << dis(gen);
        };
        return ss.str();
    }
}

相关文章