我希望将libuuid
与C ++ 11程序一起使用。但是,我想我可能会错误地解决这个问题。根据{{1}},uuid.h
是一个包含16个项目(预期)的unsigned char数组。我用此构建uuid_t
的方法如下:
std::string
我知道这可能是最合适的解决方案(在C ++ 11中避免使用uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString;
for (auto i = 0; i < 16; ++i)
{
aString += uuidObj[i];
}
,哎呀!),y&#39;所有提示?
答案 0 :(得分:6)
您可以在构造函数本身中初始化字符串,将开始和结束指针作为迭代器传递。
uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString{ uuidObj, uuidObj + 16 };
实用的羊角面包也是正确的,你可以通过使用更多的C ++ 11惯用来解放数组大小:
std::string aString{ std::begin(uuidObj), std::end(uuidObj) };
此外,问题中的代码仅复制前15个字符。
答案 1 :(得分:0)
在uuid-dev 2.31.1中,它们提供了uuid_unparse
函数。
uuid_t uuidObj;
char str[100];
uuid_generate(uuidObj);
uuid_unparse(uuidObj, str);
std::string _uuid{str};
std::cout << _uuid << std::endl;