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的两种方法的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除

  • 相关标签:C++ GUID
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:c语言属于什么类型的编程语言
    • 下一篇:.net中的错误处理机制是什么?

    相关文章

    相关视频


    • 【C语言】5种妙招教你轻松搞定变量值交换
    • c语言中怎么定义数组
    • c语言和java有什么区别
    • c语言属于什么类型的编程语言
    • 浅谈C++生成GUID的两种方法
    • [Linux C语言] 输入流输出流以及错误流的重定向
    • [Linux C语言] 管道原理及应用
    • [Linux C语言] 打造实用C语言小程序

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

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