浅谈C++生成GUID的两种方法

c++sdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css”/>

guid是软件开发中常用的组件,用于生成唯一的对象,在c#、java以及python等语言中,因为它们的标准库比较丰富,因此guid的生成比较简单,往往一两句代码就能搞定。而c++语言本身以及标准库都没有提供生成guid的api,因此,无法直接使用c++生成guid。本文介绍两种利用c++间接创建guid的方法:1)调用win32api-cocreateguid函数;2)使用boost库。

使用CoCreateGuid函数

CoCreateGuid是Windows系统本身提供的API函数,位于objbase.h头文件中,因此,我们必须首先包括该头文件:

include 

调用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平台的使用。

立即学习“C++免费学习笔记(深入)”;

使用Boost库

使用Boost库来生成GUID相对就比较简单了,代码如下:

#include #include #include 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的两种方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1433177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:57:23
下一篇 2025年12月17日 08:57:45

相关推荐

发表回复

登录后才能评论
关注微信