1

我在一个管理器类中工作,它包含表示路径的字符串。从这个字符串中,我想要一个 boost.uuid 使用这样的代码:

m_log->addMessage("Generating UUID from path",ZEL_APPENDER,LOGLEVEL_DEBUG);
boost::uuids::string_generator str_gen;
boost::uuids::uuid generatedUUID = str_gen(full_path);

assert(generatedUUID.is_nil() == false);
char msg[500];
snprintf(msg,500,"Successfully generated UUID %s from path",boost::uuids::to_string(generatedUUID).c_str());
m_log->addMessage(msg,ZEL_APPENDER,LOGLEVEL_DEBUG);

但不幸的是,我发现生成的字符串总是相同的,即使 full_path 不同。

另外,当我尝试使用这样的超简单示例时:

 string s1("helloworld");
 boost::uuids::string_generator str_gen;
 boost::uuids::uuid generatedUUID = str_gen(s1);
 cout << "s1: " << boost::uuids::to_string(generatedUUID) << endl;

Boost 抛出一个运行时异常,指出该字符串无效。你可以帮帮我吗?我发现的唯一文档来源是这里

提前致谢。

4

2 回答 2

4

根据标头中的代码,该代码不会生成哈希,而是将UUID 解析为字符串并将其转换为 uuid。

听起来您正在寻找基于路径的哈希,这与 UUID 不同。UUID 旨在是唯一的,这意味着例如,可以将具有相同值的路径存储在不同 UUID 下的关联容器中。

你最好看看Boost.Hash

于 2010-12-17T22:58:55.790 回答
0

我认为您应该仔细阅读http://www.boost.org/doc/libs/1_59_0/libs/uuid/uuid.html#boost/uuid/string_generator.hpp。您使用String Generator, 但在文章中类从字符串中boost::uuids::string_generator生成一个。uuid如果你想使用boost::uuids::string_generator,你必须在你的gen().

于 2016-01-05T03:10:25.423 回答