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.

¿Fue útil?

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().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top