2010-08-10 3 views

risposta

36

È possibile farlo un po 'più facile usare il boost :: lexical_cast che utilizza uno std :: stringstream sotto il cofano.

#include <boost/lexical_cast.hpp> 
#include <boost/uuid/uuid_io.hpp> 

const std::string tmp = boost::lexical_cast<std::string>(theUuid); 
const char * value = tmp.c_str(); 
10

È possibile includere <boost/uuid/uuid_io.hpp> e quindi utilizzare gli operatori per convertire uuid in std::stringstream. Da lì, è una conversione standard a const char* secondo necessità.

Per dettagli, vedere the Input and Output second of the Uuid documentation.

std::stringstream ss; 
ss << theUuid; 

const std::string tmp = ss.str(); 
const char * value = tmp.c_str(); 

(Per i dettagli sul perché è necessario la stringa "tmp", see here.)

1

si utilizzano le funzioni di flusso in boost/uuid/uuid_io.hpp.

boost::uuids::uuid u; 

std::stringstream ss; 
ss << u; 
ss >> u; 
26

Solo nel caso, c'è anche boost::uuids::to_string, che funziona nel seguente modo:

#include <boost/uuid/uuid.hpp> 
#include <boost/uuid/uuid_io.hpp> 

boost::uuids::uuid a = ...; 
const std::string tmp = boost::uuids::to_string(a); 
const char* value = tmp.c_str(); 
+2

Per le persone che lavorano con le versioni spinta antiche: Questo metodo viene introdotta in 1.44. Vedi http://www.boost.org/doc/libs/1_43_0/boost/uuid/uuid_io.hpp http://www.boost.org/doc/libs/1_44_0/boost/uuid/uuid_io.hpp – user1556435

+1

Questo dovrebbe essere la risposta corretta, IMHO. –