将字符串转换为boost::uuid

7

我刚开始在c ++中使用boost,想请教一些关于uuid的问题。

我正在加载一个需要我知道uuid的文件,以便将某些对象链接在一起。因此,我试图编写自己的uuids,但不确定字符串等是否有任何特殊条件,因为我使用的字符串(通常是一些基本的东西)都不起作用。有人可以指点我吗?我尝试使用字符串生成器,但至今没有成功,因此我认为我的字符串存在问题(它们目前只是随机单词)。

这里是一个简短的示例,无法提供真正的代码:

void loadFiles(std::string xmlFile);

void linkObjects(custObj network)
{
    for (int i = 0; i < network->getLength(); i++)
    {
        network[i]->setId([boost::uuid]);  
        if (i > 0)
            network[i]->addObj(network[i-1]->getId());
    }
}
1个回答

11

我理解你的问题是“我需要一个示例”。这里有一个示例,展示了

  • 读取
  • 写入
  • 生成
  • 比较

使用Boost Uuid生成uuid。

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/random_generator.hpp>
#include <boost/lexical_cast.hpp>

using namespace boost::uuids;

int main()
{
    random_generator gen;

    for (int i = 0; i < 10; ++i)
    {
        uuid new_one = gen(); // here's how you generate one

        std::cout << "You can just print it: " << new_one << "; ";

        // or assign it to a string
        std::string as_text = boost::lexical_cast<std::string>(new_one);

        std::cout << "as_text: '" << as_text << "'\n";

        // now, read it back in:
        uuid roundtrip = boost::lexical_cast<uuid>(as_text);

        assert(roundtrip == new_one);
    }
}

点击此处即可在 Coliru 上实时查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接