generare un boost.uuid da una stringa boost.path
-
11-10-2019 - |
Domanda
Sto lavorando in una classe dirigente, che contiene i percorsi stringa che rappresenta. Da queste stringhe, mi piacerebbe avere un boost.uuid utilizzando un codice come questo:
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);
Ma sfortunatamente, ho scoperto che stringa generata è sempre lo stesso, anche se percorso_completo è spettacolo diverso.
Inoltre, quando provo con un semplice esempio ultra in questo modo:
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 genera un'eccezione di runtime dicendo che stringa non è valido. Potresti aiutarmi? L'unica fonte di documentazione che ho trovato è qui
Grazie in anticipo.
Soluzione
In base alla nell'intestazione la codice non genera hash ma invece analizza un UUID-as-stringa e lo converte in un uuid.
Sembra che siete alla ricerca di un hash in base al percorso, che non è la stessa di un UUID. UUID sono destinati ad essere unico, il che implica che per esempio uno potrebbe avere percorsi dello stesso valore memorizzato in un contenitore associativo sotto diversi UUID.
Si potrebbe essere meglio guardando Boost.Hash .
Altri suggerimenti
Credo che si dovrebbe leggere http://www.boost.org/doc/libs/1_59_0/libs/uuid/uuid.html#boost/uuid/string_generator.hpp con attenzione. Si utilizza String Generator
, ma nell'articolo La classe boost::uuids::string_generator
genera un uuid
da una stringa.
se si desidera utilizzare boost::uuids::string_generator
, è necessario utilizzare
corretta stringa di formato nel vostro gen()
.