我希望使用libuuidC++ 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];
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是最合适的解决方案(同时避免malloc在C++ 11中使用yikes!),来自你们的任何提示?
您可以在构造函数本身内初始化字符串,将开始和结束指针作为迭代器传递.
uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString{ uuidObj, uuidObj + 16 };
Run Code Online (Sandbox Code Playgroud)
实用的羊角面包也是正确的,你可以通过使用更多的C++ 11惯用来解放数组大小:
std::string aString{ std::begin(uuidObj), std::end(uuidObj) };
Run Code Online (Sandbox Code Playgroud)
此外,问题中的代码仅复制前15个字符.
| 归档时间: |
|
| 查看次数: |
1289 次 |
| 最近记录: |