Frage

Ich arbeite in einem Manager-Klasse, die Zeichenfolge, die Pfade hält. Aus diesen Strings, würde Ich mag ein boost.uuid wie diese mit einem Code haben:

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);

Aber leider fand ich, dass generierte Zeichenfolge ist immer die gleiche, auch wenn full_path diferent ist.

Auch wenn ich versuche, mit einem ultra einfaches Beispiel wie folgt aus:

 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 wirft eine Laufzeitausnahme sagen, dass Zeichenfolge ungültig ist. Kannst du mir helfen? Die einzige Quelle der Dokumentation ich gefunden habe, ist hier

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Basierend auf dem Code im Header die Code nicht generiert Hashes , sondern parst ein UUID-as-string und wandelt es in eine UUID.

Es klingt wie Sie für einen Hash suchen basierend auf dem Weg, der nicht das gleiche wie ein UUID ist. UUIDs sollen eindeutig sein, was bedeutet, dass z.B. ein Pfad mit dem gleichen Wert in einem assoziativen Behälter unter verschiedenen UUID gespeichert haben könnte.

Das könnte Sie besser dran Blick auf Boost.Hash .

Andere Tipps

Ich denke, man sollte lesen http://www.boost.org/doc/libs/1_59_0/libs/uuid/uuid.html#boost/uuid/string_generator.hpp sorgfältig. Sie verwenden String Generator, aber in Artikel Die boost::uuids::string_generator Klasse erzeugt eine uuid aus einem String. wenn Sie verwenden boost::uuids::string_generator möchten, müssen Sie verwenden korrektes Format-String in Ihrem gen().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top