使用CoCreateGuid 函数即可。需要 objbase.h 头文件。
HRESULT CoCreateGuid(
GUID * pguid
);
其中GUID结构:
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
代码实现:
#include "stdafx.h"
#include "objbase.h"
#include <string>
#ifdef WIN32
#include <objbase.h>
#else
#include <uuid/uuid.h>
#endif
using namespace std;
string CreateGuid()
{
GUID struGuid;
#ifdef WIN32
CoCreateGuid(&struGuid);
#else
uuid_generate(reinterpret_cast<unsigned char *>(&struGuid));
#endif
// 将GUID转换成string
char szGuid[64] = {0};
#ifdef __GNUC__
snprintf(
#else // MSVC
_snprintf_s(
#endif
szGuid,
sizeof(szGuid),
"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",
struGuid.Data1, struGuid.Data2, struGuid.Data3,
struGuid.Data4[0], struGuid.Data4[1],
struGuid.Data4[2], struGuid.Data4[3],
struGuid.Data4[4], struGuid.Data4[5],
struGuid.Data4[6], struGuid.Data4[7]);
return string(szGuid);
}
int _tmain(int argc, _TCHAR* argv[])
{
std::string s = CreateGuid;
printf(s.c_str());
system("pause");
return 0;
}
生成结果:
{836A6276-AF39-42BD-9DCA-579B3CF9F850}