【发布时间】:2011-03-28 00:09:55
【问题描述】:
我希望将 boost::uuid 转换为 const char*。转换的正确语法是什么?
【问题讨论】:
我希望将 boost::uuid 转换为 const char*。转换的正确语法是什么?
【问题讨论】:
以防万一,还有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();
【讨论】:
您可以使用 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/uuid/uuid_io.hpp>,然后使用运算符将uuid 转换为std::stringstream。从那里,它是根据需要到const char* 的标准转换。
详情请见the Input and Output second of the Uuid documentation。
std::stringstream ss;
ss << theUuid;
const std::string tmp = ss.str();
const char * value = tmp.c_str();
(有关为什么需要“tmp”字符串的详细信息,see here。)
【讨论】:
您使用 boost/uuid/uuid_io.hpp 中的流函数。
boost::uuids::uuid u;
std::stringstream ss;
ss << u;
ss >> u;
【讨论】:
boost::uuids::uuid u;
const char* UUID = boost::uuids::to_string(u).c_str();
可以进行简单快速的转换。
【讨论】: