我希望将 libuuid 与C++ 11程序一起使用。但是,我认为我可能会对此做不正确的事情。根据uuid.huuid_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个字符。

10-06 04:10