
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的两种方法全部内容,希望文章能够帮你解决浅谈C++生成GUID的两种方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)