2010-08-10 23 views

cevap

36

Sen kaputun altında boost :: Bir std kullanan lexical_cast :: stringstream kullanarak bu biraz daha kolay yapabilir. Her ihtimale karşı

#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

<boost/uuid/uuid_io.hpp>'u dahil edip, bir uuid'i std::stringstream'a dönüştürmek için operatörleri kullanabilirsiniz. Oradan, gerektiği gibi const char* standart bir dönüşüm.

Ayrıntılar için bkz. 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(); 

(siz "tmp" dizesini neden ihtiyaç ile ilgili ayrıntılar için, see here.)

1

Sen boost/uuid/uuid_io.hpp içinde dere işlevlerini kullanın.

boost::uuids::uuid u; 

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

, aşağıdaki gibi çalışır, ayrıca boost::uuids::to_string vardır: eski boost sürümleri ile çalışan insanlar için

#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

: Bu yöntem 1.44 tanıtıldı. Bkz. 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

Bu Doğru cevap olmalı, IMHO. –