Question

Je travaille dans une classe de gestionnaire, qui détient des chemins chaîne représentant. A partir de ces chaînes, je voudrais avoir un boost.uuid en utilisant un code comme ceci:

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

Mais unfortunatelly, je trouve que chaîne générée est toujours le même, même si chemin_complet est diferent.

En outre, lorsque je tente un exemple ultra simple comme ceci:

 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 lance une exception d'exécution disant que la chaîne est non valide. Pourriez-vous m'aider? La seule source de documentation que j'ai trouvé est ici

Merci à l'avance.

Était-ce utile?

La solution

Basé sur le code dans l'en-tête la code ne génère pas de hash , mais plutôt un parse UUID-as-chaîne et le convertit en un UUID.

On dirait que vous êtes à la recherche d'un hachage basé sur le chemin, ce qui est la même que celle d'un UUID. UUID sont destinés à être unique, par exemple, ce qui implique que on pourrait avoir des chemins de la même valeur stockée dans un récipient associatif sous différentes UUID.

Vous pourriez être mieux regarder Boost.Hash .

Autres conseils

Je pense que vous devriez lire http://www.boost.org/doc/libs/1_59_0/libs/uuid/uuid.html#boost/uuid/string_generator.hpp soigneusement. Vous utilisez String Generator, mais dans l'article La classe boost::uuids::string_generator génère une uuid d'une chaîne. si vous voulez utiliser boost::uuids::string_generator, vous devez utiliser chaîne de format correct dans votre gen().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top