C++11创建uuid
时间: 2024-01-11 10:47:13 浏览: 28
可以使用以下代码在C++11中生成uuid:
```cpp
#include <random>
#include <sstream>
#include <iomanip>
#include <chrono>
#include <cstdint>
std::string generate_uuid_v4()
{
// Generate 16 random bytes
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, 255);
std::uint8_t bytes[16];
for (int i = 0; i < 16; ++i) {
bytes[i] = dis(gen);
}
// Set version and variant bits
bytes[6] = (bytes[6] & 0x0F) | 0x40; // version 4
bytes[8] = (bytes[8] & 0x3F) | 0x80; // variant 2
// Format as a UUID string
std::ostringstream oss;
oss << std::hex << std::setfill('0');
for (int i = 0; i < 4; ++i) {
oss << std::setw(2) << static_cast<int>(bytes[i]);
}
oss << '-';
for (int i = 4; i < 6; ++i) {
oss << std::setw(2) << static_cast<int>(bytes[i]);
}
oss << '-';
for (int i = 6; i < 8; ++i) {
oss << std::setw(2) << static_cast<int>(bytes[i]);
}
oss << '-';
for (int i = 8; i < 10; ++i) {
oss << std::setw(2) << static_cast<int>(bytes[i]);
}
oss << '-';
for (int i = 10; i < 16; ++i) {
oss << std::setw(2) << static_cast<int>(bytes[i]);
}
return oss.str();
}
```
调用 `generate_uuid_v4()` 函数将返回一个随机生成的uuid字符串。