C++ 在C+;中使用Boost生成UUID的示例+;

C++ 在C+;中使用Boost生成UUID的示例+;,c++,boost,uuid,boost-uuid,C++,Boost,Uuid,Boost Uuid,我只想生成随机UUID,因为程序中的实例具有唯一标识符非常重要。我研究了一下,但我无法生成UUID,因为我不知道要使用哪个类和方法 如果有人能给我举个例子说明如何做到这一点,我将不胜感激。一个基本的例子: #include <boost/uuid/uuid.hpp> // uuid class #include <boost/uuid/uuid_generators.hpp> // generators #include <boost/uuid

我只想生成随机UUID,因为程序中的实例具有唯一标识符非常重要。我研究了一下,但我无法生成UUID,因为我不知道要使用哪个类和方法

如果有人能给我举个例子说明如何做到这一点,我将不胜感激。

一个基本的例子:

#include <boost/uuid/uuid.hpp>            // uuid class
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp>         // streaming operators etc.

int main() {
    boost::uuids::uuid uuid = boost::uuids::random_generator()();
    std::cout << uuid << std::endl;
}
#包括//uuid类
#包括//发电机
#包括//流媒体运营商等。
int main(){
boost::uuids::uuid uuid=boost::uuids::random_生成器();

Georg Fritzsche的答案是可以的,但可能有点误导。如果需要多个uuid,应该重用生成器。 也许这样更清楚:

#include <iostream>

#include <boost/uuid/uuid.hpp>            // uuid class
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp>         // streaming operators etc.


int main()
{
    boost::uuids::random_generator generator;

    boost::uuids::uuid uuid1 = generator();
    std::cout << uuid1 << std::endl;

    boost::uuids::uuid uuid2 = generator();
    std::cout << uuid2 << std::endl;

    return 0;
}
#包括
#包含//uuid类
#包括//发电机
#包括//流媒体运营商等。
int main()
{
boost::uuids::随机_生成器;
boost::uuids::uuid uuid1=generator();

std::cout以及如何将其分配给字符串?因为每个实例都有一个共同的基,我需要将UUID连接到一个基。再次感谢!@nik:使用-有一个
stringstream
示例。或者让
boost::lexical_cast(UUID)
为您这样做。至于双参数:第一个参数构造一个
随机生成器的实例,第二个参数在该实例上使用
操作符()
。如果您想生成多个uuid:
随机生成器rg;uuid ui=rg(),您应该保存生成器并在其上调用
操作符()
@Nikola:使用boost::uuids::to_字符串(uuid)架线uuids@GeorgFritzsche总之,确切的时间和机器的单独网络地址是唯一的。因此,我认为它可能是哈希函数的好键。我以后不需要明确的值。但您的想法给我带来了一个想法。使用时间和网络地址作为随机数生成器或那么。为什么要重复使用生成器?这是性能优化还是安全提示?如果使用新的生成器导致唯一性问题,它不是一个很好的通用唯一ID。@Saneeshkumar它是“通用唯一标识符”而不是“此生成器唯一标识符”出于一个原因。向我学习并使生成器线程本地化。它们的种子非常昂贵。官方文档仅鼓励出于性能考虑而非安全考虑重用随机_生成器。“根据平台的不同,初始化生成器可能需要设置成本,因此如果可以,请计划重用它”来源: