这篇文章主要介绍了c++生成GUID的两种方法是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
GUID是软件开发中常用的组件,用于生成唯一的对象,在c#、Java以及Python等语言中,因为它们的标准库比较丰富,因此GUID的生成比较简单,往往一两句代码就能搞的定。而c++语言本身以及标准库都没有提供生成GUID的API,因此,无法直接使用c++生成GUID。本文介绍两种利用c++间接创建GUID的方法:1)调用Win32API-CoCreateGuid函数;2)使用提高库。
使用CoCreateGuid函数
CoCreateGuid是Windows系统本身提供的API函数,位于<代码> objbase。h 代码>头文件中,因此,我们必须首先包括该头文件:
包括& lt; objbase.h>
调用CoCreateGuid的代码如下所示:
GUID GUID; HRESULT h=CoCreateGuid(和guid); 如果(h==S_OK) ans=GuidToString (guid); 其他的 把runtime_error(“生成guid失败!“);
上述代码中,如果创建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), “{% 08年04 x - x - % % % 02 x % 02 - 04 x - x % % 02年02 x % 02 x % 02 x % 02 x % 02}“, guid。Data1、guid。Data2 guid.Data3, guid。Data4 [0], guid。Data4 [1], guid。guid.Data4 Data4 [2], [3], guid。Data4 [4], guid。Data4 [5], guid。guid.Data4 Data4 [6], [7]); 返回std:: string (buf); }
这种基于Win32API生成GUID的方法的优点在于不需要依赖其他库,缺点在于无法跨平台,只能在Windows平台的使用。
使用Boost库
使用Boost库来生成GUID相对就比较简单了,代码如下:
# include & lt;提高/uuid/uuid.hpp> # include & lt;提高/uuid/uuid_generators.hpp> # include & lt;提高/uuid/uuid_io.hpp> boost:: uuid:: uuid uid=提高::uuid: random_generator () (); 常量字符串uid_str=提高::uuid:: to_string (uid); cout & lt; & lt;uid_str & lt; & lt;endl;
首先加载包,然后使用boost:: uuid命名空间下的相关类型和函数就可以创建std:: string类型的GUID了。基于提高来生成GUID的方法比较简单,但是缺点是需要额外引入提高库。
感谢你能够认真阅读完这篇文章,希望小编分享c++生成GUID的两种方法是什么内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!