generar un boost.uuid de una cadena boost.path
-
11-10-2019 - |
Pregunta
Estoy trabajando en una clase de gerente, que mantiene caminos cadena que representa. De esta cuerdas, me gustaría tener un boost.uuid utilizando un código como el siguiente:
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);
Pero desgraciadamente, he encontrado que la cadena generada es siempre la misma, incluso si full_path es diferent.
También, cuando trato con un ejemplo sencillo de ultra como esto:
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 produce una excepción de tiempo de ejecución diciendo que la cadena no es válido. ¿Usted me podría ayudar? La única fuente de documentación que he encontrado es aquí
Gracias de antemano.
Solución
Sobre la base de la href="http://www.boost.org/doc/libs/1_45_0/boost/uuid/string_generator.hpp" código en la cabecera la código no genera hashes pero en vez analiza un UUID-como-cadena y convierte a un UUID.
Parece que usted está buscando un hash basado en el camino, que no es lo mismo que un UUID. UUID pretenden ser único, lo que implica que, por ejemplo, uno podría tener caminos del mismo valor almacenado en un contenedor asociativo bajo diferentes UUID.
podría ser mejor buscar en Boost.Hash .
Otros consejos
Creo que debería leer http://www.boost.org/doc/libs/1_59_0/libs/uuid/uuid.html#boost/uuid/string_generator.hpp cuidadosamente. Se utiliza String Generator
, pero en el artículo La clase boost::uuids::string_generator
genera una uuid
de una cadena.
si desea que el uso boost::uuids::string_generator
, debe utilizar
cadena de formato correcto en su gen()
.