CPP: 跨平台生成GUID/UUID
2013-11-18 09:42
267 查看
#ifndef XGUID_H #define XGUID_H #include <string> #include <stdio.h> #ifdef WIN32 #include <objbase.h> #else #include <uuid/uuid.h> typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID, UUID; #endif namespace XGUID { GUID CreateGuid() { GUID guid; #ifdef WIN32 CoCreateGuid(&guid); #else uuid_generate(reinterpret_cast<unsigned char *>(&guid)); #endif return guid; } std::string GuidToString(const GUID &guid) { char buf[64] = {0}; #ifdef __GNUC__ snprintf( #else // MSVC _snprintf_s( #endif 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); } std::string CreateGuidString() { return GuidToString(CreateGuid()); } }//namespace #endif // XGUID_H eg: QString str1(XGUID::CreateGuidString().c_str()); |
相关文章推荐
- CPP: 跨平台生成GUID/UUID
- 跨平台生成GUID/UUID
- 跨平台生成GUID/UUID
- php中生成标准uuid(guid)的方法
- 生成36位全局唯一数(GUID、UUID)
- 备忘:生成GUID(UUID)
- GUID(UUID)的生成
- Python生成UUID(GUID)
- Java生成唯一GUID UUID
- Java生成唯一GUID UUID
- java生成GUID与UUID
- GUID UUID 生成
- 怎样用java生成GUID与UUID
- Java生成唯一UUID(GUID)
- 在Linux下生成GUID的程序,及编译错误 “uuid/uuid.h: No such file or directory” 的解决办法。
- Windows 10 下 PostgreSQL 生成 UUID(Guid)
- Java,Javascript,Oracle开发生成UUID或GUID方法总结
- Linux & Windows上生成UUID/GUID
- flash as3 GUID UUID 生成类
- php中生成标准uuid(guid)的方法