我希望将 libuuid
与C++ 11程序一起使用。但是,我认为我可能会对此做不正确的事情。根据uuid.h
,uuid_t
是16个项目的unsigned char数组(预期)。我用此方法构建std::string
的方法如下:
uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString;
for (auto i = 0; i < 16; ++i)
{
aString += uuidObj[i];
}
我知道这不是最合适的解决方案(避免在C++ 11中使用
malloc
,是的!),你们有什么建议吗? 最佳答案
您可以在构造函数本身中初始化字符串,将begin和end指针作为迭代器传递。
uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString{ uuidObj, uuidObj + 16 };
实用新月形面包也是正确的,您可以使用更多的C++ 11惯用语来摆脱对数组大小的担心:
std::string aString{ std::begin(uuidObj), std::end(uuidObj) };
另外,问题中的代码仅复制前15个字符。