2010-08-10 13 views

Odpowiedz

36

Można zrobić to nieco łatwiejsze przy użyciu boost :: lexical_cast który korzysta std :: stringstream pod maską.

#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

Można dołączyć <boost/uuid/uuid_io.hpp>, a następnie użyć operatorów do konwersji uuid na std::stringstream. Od tego momentu jest to standardowa konwersja do const char* w razie potrzeby. Aby uzyskać szczegółowe informacje, zobacz .

std::stringstream ss; 
ss << theUuid; 

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

(Szczegółowe informacje na temat, dlaczego trzeba się "TMP" ciąg, see here.)

1

użyć funkcji strumieniowych w doładowania/UUID/uuid_io.hpp.

boost::uuids::uuid u; 

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

Tylko w przypadku, istnieje również boost::uuids::to_string, który działa w następujący sposób:

#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

Dla osób pracujących z dawnych wersjach doładowania: Metoda ta jest wprowadzana w 1,44. Zobacz 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

To powinna być poprawna odpowiedź, IMHO. –