生成guid的头文件:#include <objbase.h>
GUID guid;
if (S_OK == ::CoCreateGuid(&guid))
{
LPCTSTR str = GUID2LPCTS(guid);
int a = 10;
}
guid与LPCTSTR互转 方法
BOOL LPCTSR2GUID(LPCTSTR szGUID, GUID& Guid) {
memset(&Guid, 0, sizeof(Guid));
int nRet =_stscanf_s(szGUID,
_T("%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 (nRet == 11) ? TRUE : FALSE;
}
LPCTSTR GUID2LPCTS(GUID Guid) {
static TCHAR szBuf[65] = { 0 };
_sntprintf_s(szBuf, 64, _T("%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 szBuf;
}
int main()
{
GUID guid;
if (S_OK == ::CoCreateGuid(&guid))
{
LPCTSTR str = GUID2LPCTS(guid);
int a = 10;
}
}
最终效果:
直接生成guid的方法:
const char* CreateGuid()
{
static char buf[64] = { 0 };
GUID guid;
if (S_OK == ::CoCreateGuid(&guid))
{
_snprintf_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 (const char*)buf;
}
int main()
{
string str = CreateGuid();
cout << str << endl;
}