将boost::uuid转换为char*

38

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

5个回答

65

如果需要的话,还有 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();

2
对于使用旧版boost的人们:该方法是在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。 - user1556435

49

您可以使用 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();

阅读了Boost文档后,我认为这个答案是正确的。然而,根据文档还表明,由boost::uuids提供的to_string和to_wstring函数可能比boost::lexical_cast更快。[链接](https://www.boost.org/doc/libs/1_64_0/libs/uuid/uuid.html) - Gr-Disarray

11
你可以包含<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

您可以在boost/uuid/uuid_io.hpp中使用流函数。

boost::uuids::uuid u;

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

1
boost::uuids::uuid u;

const char* UUID = boost::uuids::to_string(u).c_str();

可以进行简单快速的转换。

3
如果 to_string 返回临时对象,这会导致 UB。 - Igor R.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接