размер форсирования UUID в строке возвращает 36 - PullRequest
1 голос
/ 28 февраля 2011

Я пытаюсь сгенерировать 16-символьную строку uuid, используя boost :: uuid, но он возвращает 36 символов.

boost::uuids::uuid uid == boost::random_generator()();
std::cout << size of uid:" << uid.size << std::endl; //always 16
std::stringstream ss;
ss<< uid;
std::string s = ss.str();
std::cout << "size of uid:" << s.size() << std::endl; // always 36

Как получить 16-символьную строку uuid?

1 Ответ

2 голосов
/ 28 февраля 2011

Согласно документации , этот фрагмент кода должен содержать строку из 16 символов:

#include <boost/uuid/uuid.hpp>            // uuid class
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp>         // streaming operators etc.
boost::uuids::uuid uid = boost::random_generator()();
std::string s(uid.size());
std::copy(u.begin(), u.end(), s.begin());

Однако это не строка ASCII, а строка байтов. Поскольку ASCII может представлять байты с двумя шестнадцатеричными символами, UUID в ASCII имеет 32 символа плюс 4 разделителя, 36. Таким образом, у вас уже есть правильный код :)

...