在C++11中使用libuuid/uuid-dev
Using libuuid / uuid-dev with C++11
我希望将libuuid
与C++11程序一起使用。然而,我想我可能对此做得不对。根据uuid.h
,uuid_t
是一个由16个项目组成的无符号字符数组(预期)。我用它构建std::string
的方法如下:
uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString;
for (auto i = 0; i < 16; ++i)
{
aString += uuidObj[i];
}
我知道这不是最合适的解决方案(同时避免C++11中的malloc
,哎呀!),你们有什么建议吗?
您可以在构造函数本身中初始化字符串,将开始指针和结束指针作为迭代器传递。
uuid_t uuidObj;
uuid_generate(uuidObj);
std::string aString{ uuidObj, uuidObj + 16 };
Pragmatic Croissant也是正确的,您可以通过使用更为C++11的惯用语:来摆脱对数组大小的担忧
std::string aString{ std::begin(uuidObj), std::end(uuidObj) };
此外,问题中的代码只复制前15个字符。
在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;
相关文章:
- 在 XSLT 1.0 中生成 UUID
- 请发现它在 dev 中工作的错误,但在 hackerrank 中不起作用
- 致命错误:找不到'boost/uuid/uuid.hpp'文件
- 无法在 dev-c++ 上编译程序?
- 查找蓝牙设备的服务的 uuid
- Dev c++ mingw 不再编译
- 如何在 Windows 上将bcrypt_gensalt与 /dev/urandom 一起使用?
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- dev Wx Dev C++ vs Graphics.h?
- dev如何在C++中比较二进制数
- 在linux中为c++dev配置VSCode
- DEV C++ 第 69 行 [错误] ISO "for" 范围更改了"i"的名称查找 [-允许]
- dev在试图从dev c++mingw 4.8.1中的文件读取时接收分段错误
- Generate boost::uuids::uuid from boost::compute::detail::sha
- 我有一个C++函数,它在Dev C++中编译,但在G++中不编译
- 写入/dev/ttyS0后读取0字节
- 如何将 time-uuid(存储在 boost uuid 中)转换为时间戳/自纪元以来的时间?
- 如何将 stderr 重定向到 /dev/null
- 如何创建C++DLL(使用DEV -C++)并在MT4脚本中使用(逐步)
- 在C++11中使用libuuid/uuid-dev