Sto cercando di convertire un boost :: uuid in un const char *. Qual è la sintassi corretta per la conversione?Converti boost :: uuid in char *
25
A
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();
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
Questo dovrebbe essere la risposta corretta, IMHO. –