使用libuuid / uuid-dev和C ++ 11

时间:2015-03-25 20:54:27

标签: c++ c++11

我希望将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;所有提示?

2 个答案:

答案 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;