首页 > 后端开发 > C++ > 正文

c++中如何生成uuid_c++生成UUID方法

穿越時空
发布: 2025-09-28 18:50:01
原创
700人浏览过
答案:C++中生成UUID可通过Boost库、系统API或轻量库实现;推荐Boost用于大型项目,Windows用CoCreateGuid,Linux读取/proc/sys/kernel/random/uuid,嵌入式场景可用uuid-cpp等头文件库。

c++中如何生成uuid_c++生成uuid方法

在C++中生成UUID(通用唯一识别码)没有标准库直接支持,但可以通过第三方库或调用系统API来实现。以下是几种常见的方法。

使用Boost库生成UUID

Boost是一个功能强大的C++库集合,其中boost::uuids提供了生成和操作UUID的工具

步骤:

  • 安装Boost库(可通过包管理器如vcpkg、apt或官网下载)
  • 包含头文件<boost/uuid/uuid.hpp><boost/uuid/uuid_generators.hpp>
  • 使用随机数生成器创建UUID
示例代码:
#include <iostream>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>

int main() {
    boost::uuids::random_generator gen;
    boost::uuids::uuid uuid = gen();
    std::cout << uuid << std::endl;
    return 0;
}
登录后复制
编译时需链接Boost系统和随机库:
g++ -o uuid_example uuid.cpp -lboost_system -lboost_random
登录后复制

使用跨平台封装或自定义实现

若不能使用Boost,可封装系统API或使用轻量级实现。

Windows平台:使用CoCreateGuid

uBrand Logo生成器
uBrand Logo生成器

uBrand Logo生成器是一款强大的AI智能LOGO设计工具。

uBrand Logo生成器 57
查看详情 uBrand Logo生成器
  • 调用Windows API CoCreateGuid
示例:
#include <iostream>
#include <objbase.h>

std::string guid_to_string(const GUID& guid) {
    char buf[37];
    sprintf(buf, "%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(buf);
}

int main() {
    CoInitialize(nullptr);
    GUID guid;
    CoCreateGuid(&guid);
    std::cout << guid_to_string(guid) << std::endl;
    CoUninitialize();
    return 0;
}
登录后复制
编译需链接ole32.lib
cl uuid_win.cpp -link ole32.lib
登录后复制

Linux平台:读取/proc/sys/kernel/random/uuid

立即学习C++免费学习笔记(深入)”;

  • 现代Linux系统可通过虚拟文件获取系统生成的UUID
示例:
#include <iostream>
#include <fstream>
#include <string>

std::string generate_uuid_linux() {
    std::ifstream file("/proc/sys/kernel/random/uuid");
    std::string uuid;
    if (file >> uuid) {
        return uuid;
    }
    return "";
}

int main() {
    std::cout << generate_uuid_linux() << std::endl;
    return 0;
}
登录后复制

使用开源轻量库(如uuid-cpp)

一些小型开源项目如uuid-cpp提供头文件-only的解决方案,依赖少,易于集成。
  • GitHub搜索uuid-cpp,下载并包含头文件
  • 通常基于随机数或时间戳生成
示例(假设库接口类似):
#include "uuid.hpp"
auto uuid = uuids::to_string(uuids::generate());
std::cout << uuid << std::endl;
登录后复制
基本上就这些常见方式。选择哪种取决于项目是否允许引入Boost、目标平台以及对依赖的控制要求。Boost最推荐用于大型项目,系统调用适合平台特定应用,轻量库适合嵌入式或简洁需求。

以上就是c++++中如何生成uuid_c++生成UUID方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号