Я хочу преобразовать boost:: uuid в const char *. Каков правильный синтаксис для преобразования?
Преобразовать boost:: uuid в char *
Ответ 1
Вы можете сделать это немного проще, используя boost:: lexical_cast, который использует std:: stringstream под капотом.
#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();
Ответ 2
На всякий случай существует также boost::uuids::to_string
, который работает следующим образом:
#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();
Ответ 3
Вы можете включить <boost/uuid/uuid_io.hpp>
, а затем использовать операторы для преобразования uuid в std::stringstream
. Оттуда это стандартное преобразование в const char*
по мере необходимости.
Подробнее см. вторая и вторая в документации Uuid.
std::stringstream ss;
ss << theUuid;
const std::string tmp = ss.str();
const char * value = tmp.c_str();
(Подробнее о том, зачем нужна строка "tmp", см. здесь.)
Ответ 4
Вы используете функции потока в boost/uuid/uuid_io.hpp.
boost::uuids::uuid u;
std::stringstream ss;
ss << u;
ss >> u;