C++无内置UUID支持,可通过Boost库或OpenSSL实现;2. Boost提供标准UUID生成,需链接相关库;3. OpenSSL可手动构造v4 UUID;4. 推荐Boost优先,轻量场景选OpenSSL。

在C++中生成UUID(通用唯一识别码)没有内置的标准库支持,但可以通过第三方库或调用系统API来实现。以下是几种常见且实用的方法。
boost::uuids提供了完整的UUID生成支持。
步骤:
<boost/uuid/uuid.hpp>和<boost/uuid/uuid_generators.hpp>
示例代码:
#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; // 输出类似: 550e8400-e29b-41d4-a716-446655440000
return 0;
}
编译时需链接Boost系统和随机库,例如:
立即学习“C++免费学习笔记(深入)”;
g++ main.cpp -lboost_system -lboost_random -lboost_date_time
RAND_bytes生成加密级随机数,可手动构造UUID格式。
注意:这不是标准UUID库,但可以模拟版本4的UUID(基于随机数)。
示例代码片段:
#include <iostream>
#include <openssl/rand.h>
#include <iomanip>
#include <sstream>
std::string generate_uuid_v4() {
unsigned char bytes[16];
RAND_bytes(bytes, 16);
// 设置UUID版本和变体
bytes[6] = (bytes[6] & 0x0F) | 0x40; // 版本4
bytes[8] = (bytes[8] & 0x3F) | 0x80;
std::stringstream ss;
ss << std::hex << std::setfill('0');
for (int i = 0; i < 16; i++) {
ss << std::setw(2) << (int)bytes[i];
if (i == 3 || i == 5 || i == 7 || i == 9) ss << "-";
}
return ss.str();
}
编译时链接OpenSSL:g++ main.cpp -lssl -lcrypto
推荐方案:
CoCreateGuid API(需objbase.h)/proc/sys/kernel/random/uuid(如果存在)UUID版本说明:
以上就是c++++怎么生成一个UUID_c++ UUID生成方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号