1

boost :: uuidを使用して16文字の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文字列を取得するにはどうすればよいですか?

4

1 に答える 1

2

ドキュメントによると、このコードは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は2つの16進文字でバイトを表すことができるため、ASCIIのUUIDには32文字と4つの区切り文字、36があります。したがって、適切なコードがすでにあります:)

于 2011-02-27T23:52:34.040 に答える