2010-07-14 15 views
73

Voglio generare UUID casuali, poiché è importante che le istanze nel mio programma abbiano identificatori univoci. Ho esaminato Boost UUID, ma non riesco a generare l'UUID perché non capisco quale classe e metodo utilizzare.Esempio di generazione UUID utilizzando Boost in C++

Sarei grato se qualcuno potesse darmi qualche esempio su come raggiungere questo obiettivo.

risposta

129

un esempio di base:

#include <boost/uuid/uuid.hpp>   // uuid class 
#include <boost/uuid/uuid_generators.hpp> // generators 
#include <boost/uuid/uuid_io.hpp>   // streaming operators etc. 

int main() { 
    boost::uuids::uuid uuid = boost::uuids::random_generator()(); 
    std::cout << uuid << std::endl; 
} 

uscita Esempio:

7feb24af-fc38-44de-bc38-04defc3804de

+0

Grazie! Sono stato confuso da due coppie di parentesi. :) – Nikola

+3

E come lo si assegnerebbe a una stringa? Perché ho una base comune per ogni istanza e avrei bisogno di concatenare UUID a una base. Grazie ancora! – Nikola

+20

@nik: usa il [supporto streaming] (http://www.boost.org/doc/libs/1_43_0/libs/uuid/uuid.html#boost/uuid/uuid_io.hpp) - esiste un 'stringstream' esempio. Oppure lasciare 'boost :: lexical_cast (uuid)' fallo per te. –

15

La risposta di Georg Fritzsche è ok, ma forse un po ' ingannevole. Dovresti riutilizzare il generatore se hai bisogno di più di un uuid. Forse è più chiaro in questo modo:

#include <iostream> 

#include <boost/uuid/uuid.hpp>   // uuid class 
#include <boost/uuid/uuid_generators.hpp> // generators 
#include <boost/uuid/uuid_io.hpp>   // streaming operators etc. 


int main() 
{ 
    boost::uuids::random_generator generator; 

    boost::uuids::uuid uuid1 = generator(); 
    std::cout << uuid1 << std::endl; 

    boost::uuids::uuid uuid2 = generator(); 
    std::cout << uuid2 << std::endl; 

    return 0; 
} 
+0

Perché dovresti riutilizzare i generatori? È un ottimizzazione delle prestazioni o un consiglio per la sicurezza? – Fred

+2

per le prestazioni – Nikko

+2

Non sarebbe un ID universalmente univoco se l'utilizzo di un nuovo generatore ha causato problemi di unicità. – xaxxon

Problemi correlati