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的两种要领的细致内容,更多请关注ki4网别的相干文章!