string para impulsionar:: conversão uuid
-
21-12-2019 - |
Pergunta
Acabei de começar a usar o boost em c++ e só queria fazer algumas perguntas relacionadas aos uuids.
Estou carregando um arquivo que exige que eu conheça os uuids para poder vincular alguns objetos.Por esse motivo, estou tentando escrever meus próprios uuids, mas não tenho certeza se há alguma condição especial para as strings, etc., pois as strings que estou usando (geralmente algo básico) não estão funcionando.Alguém pode me apontar na direção certa?Eu tentei usar um gerador de strings, mas sem sucesso até agora, então presumo que há algo errado com minhas strings (que atualmente são apenas palavras aleatórias).
Aqui está um pequeno exemplo de coisa, não é possível fornecer o código real:
void loadFiles(std::string xmlFile);
void linkObjects(custObj network)
{
for (int i = 0; i < network->getLength(); i++)
{
network[i]->setId([boost::uuid]);
if (i > 0)
network[i]->addObj(network[i-1]->getId());
}
}
Solução
Interpretei sua pergunta como "Preciso de uma amostra".Aqui está um exemplo que mostra
- leitura
- escrita
- gerando
- comparando
uuids com Boost Uuid.
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/random_generator.hpp>
#include <boost/lexical_cast.hpp>
using namespace boost::uuids;
int main()
{
random_generator gen;
for (int i = 0; i < 10; ++i)
{
uuid new_one = gen(); // here's how you generate one
std::cout << "You can just print it: " << new_one << "; ";
// or assign it to a string
std::string as_text = boost::lexical_cast<std::string>(new_one);
std::cout << "as_text: '" << as_text << "'\n";
// now, read it back in:
uuid roundtrip = boost::lexical_cast<uuid>(as_text);
assert(roundtrip == new_one);
}
}
Veja Ao vivo no Coliru