我的代码基于SO中的几个帖子:
boost::uuids::uuid uuid = boost::uuids::random_generator()();
auto uuidString= boost::lexical_cast<std::string>(uuid);
但是当我编译这段代码时,我收到了这个错误:
Source type is neither std::ostream`able nor std::wostream`able C:\Local\boost\boost\lexical_cast\detail\converter_lexical.hpp
如何解决此错误?
答案 0 :(得分:8)
你想错过了包含,我想:
<强> Live On Coliru 强>
#include <boost/lexical_cast.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/random_generator.hpp>
int main() {
boost::uuids::uuid uuid = boost::uuids::random_generator()();
auto uuidString = boost::lexical_cast<std::string>(uuid);
}
答案 1 :(得分:2)
你可以尝试:
std::stringstream ss;
std::string uuidStr;
boost::uuids::uuid uuid = boost::uuids::random_generator()();
ss << uuid;
ss >> uuidStr;
流操作员
标准输入和输出流运算符&lt;&lt;和&gt;&gt;由boost / uuid / uuid_io.hpp提供。 uuid的字符串表示形式为hhhhhhhh -hhhh-hhhh-hhhh-hhhhhhhhhhhhh,其中h是十六进制数字。
boost::uuids::uuid u1; // initialize uuid
std::stringstream ss;
ss << u1;
boost::uuids::uuid u2;
ss >> u2;
assert(u1, u2);
然而lexical_cast
也应该有用。
也许您应该检查uuid
实际包含的内容,以确定生成的uuid
是否有问题。
此外:
boost::uuids::uuid u; // initialize uuid
std::string s1 = to_string(u);
根据文档,应该稍快一些。