将boost :: uuid转换为char*

Sch*_*tzE 33 c++ uuid boost

我期待将boost :: uuid转换为const char*.转换的正确语法是什么?

小智 50

以防万一,还有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();
Run Code Online (Sandbox Code Playgroud)

  • 对于使用古代升压版本的人:这种方法在1.44中引入.见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 (2认同)
  • 这应该是正确答案,恕我直言. (2认同)

小智 43

你可以使用在引擎盖下使用std :: stringstream的boost :: lexical_cast来更容易地做到这一点.

#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();
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 11

您可以包含<boost/uuid/uuid_io.hpp>然后使用运算符将​​uuid转换为a std::stringstream.从那里,它是const char*根据需要的标准转换.

有关详细信息,请参阅Uuid文档的输入和输出第二个.

std::stringstream ss;
ss << theUuid;

const std::string tmp = ss.str();
const char * value = tmp.c_str();
Run Code Online (Sandbox Code Playgroud)

(有关为什么需要"tmp"字符串的详细信息,请参阅此处.)