Конвертировать boost :: uuid в char * - PullRequest
32 голосов
/ 10 августа 2010

Я хочу преобразовать boost :: uuid в const char *.Какой правильный синтаксис для преобразования?

Ответы [ 4 ]

44 голосов
/ 15 сентября 2015

На всякий случай есть также 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();
41 голосов
/ 24 августа 2010

Вы можете сделать это немного проще, используя 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();
10 голосов
/ 10 августа 2010

Вы можете включить <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", см. Здесь .)

1 голос
/ 10 августа 2010

Вы используете функции потока в boost / uuid / uuid_io.hpp.

boost::uuids::uuid u;

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