генерировать boost.uuid из строки boost.path - PullRequest
1 голос
/ 18 декабря 2010

Я работаю в классе менеджера, который содержит строку, представляющую пути. Из этой строки я хотел бы получить 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 генерирует исключение времени выполнения, сообщающее, что строка недопустима. Не могли бы вы помочь мне? Единственный источник документации, который я нашел, это здесь

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 18 декабря 2010

На основе кода в заголовке код не генерирует хешей , а вместо этого анализирует UUID-as-string и преобразует его в uuid.

Звучит так, будто вы ищете хеш на основе пути, который отличается от UUID.UUID предназначены для того, чтобы быть уникальными, подразумевая, что, например, можно иметь пути одного и того же значения, хранящиеся в ассоциативном контейнере под разными UUID.

0 голосов
/ 05 января 2016

Я думаю, вы должны внимательно прочитать 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...