浅谈C++生成GUID的两种方法
导读:收集整理的这篇文章主要介绍了浅谈C++生成GUID的两种方法,觉得挺不错的,现在分享给大家,也给大家做个参考。 GUID是软件开发中常用的组件,用于生成唯一的对象,在C#、Java以及Python等语言中,因为它们...
收集整理的这篇文章主要介绍了浅谈C++生成GUID的两种方法,觉得挺不错的,现在分享给大家,也给大家做个参考。
GUID是软件开发中常用的组件,用于生成唯一的对象,在C#、Java以及Python等语言中,因为它们的标准库比较丰富,因此GUID的生成比较简单,往往一两句代码就能搞定。而C++语言本身以及标准库都没有提供生成GUID的API,因此,无法直接使用C++生成GUID。本文介绍两种利用C++间接创建GUID的方法:1)调用Win32API-CoCreateGuid函数;2)使用Boost库。
使用CoCreateGuid函数
CoCreateGuid是Windows系统本身提供的API函数,位于objbase.h
头文件中,因此,我们必须首先包括该头文件:
include objbase.h>
调用CoCreateGuid的代码如下所示:
GUID guid; hrESULT h = CoCreateGuid(& guid); if (h == S_OK) ans = GuidToString(guid); else throw runtime_error("generate guid failed!");
上述代码中,如果创建GUID成功,则h的值为S_OK,失败则为其他标志位。HRESULT是COM组件的一类返回值,请参考HRESULT。GuidToString函数用于将生成的Guid转换为std::string。相关教程:C++视频教程
std::string GuidToString(const GUID & guid){ char buf[64] = { 0 } ; sPRintf_s(buf, sizeof(buf), "{ %08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X} ", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); return std::string(buf); }
这种基于Win32API生成GUID的方法的优点在于不需要依赖其他库,缺点在于无法跨平台,只能在Windows平台的使用。
使用Boost库
使用Boost库来生成GUID相对就比较简单了,代码如下:
#include boost/uuid/uuid.hpp> #include boost/uuid/uuid_generators.hpp> #include boost/uuid/uuid_io.hpp> boost::uuids::uuid uid = boost::uuids::random_generator()(); const string uid_str = boost::uuids::to_string(uid); cout uid_str endl;
首先加载包,然后使用boost::uuids命名空间下的相关类型和函数就可以创建std::string类型的GUID了。基于BOOST来生成GUID的方法比较简单,但是缺点是需要额外引入Boost库。
以上就是浅谈C++生成GUID的两种方法的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 浅谈C++生成GUID的两种方法
本文地址: https://pptw.com/jishu/593526.html