Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Как генерить GUID?


Автор: Alca 18.1.2011, 15:42
Нужен аналог виндовой функции CoCreateGuid(). 
Можно ли сгенерить без boost-a и прочих либ?

Автор: Dem_max 18.1.2011, 15:57
http://www.codeproject.com/KB/mcpp/guid.aspx

Код

void GenerateGuid(char *guidStr)
{
char *pGuidStr = guidStr;
int i;

srand(static_cast<unsigned int> (time(NULL))); /*Randomize based on time.*/

/*Data1 - 8 characters.*/
*pGuidStr++ = '{'; 
for(i = 0; i < 8; i++, pGuidStr++)
((*pGuidStr = (rand() % 16)) < 10) ? *pGuidStr += 48 : *pGuidStr += 55; 

/*Data2 - 4 characters.*/
*pGuidStr++ = '-'; 
for(i = 0; i < 4; i++, pGuidStr++)
((*pGuidStr = (rand() % 16)) < 10) ? *pGuidStr += 48 : *pGuidStr += 55;

/*Data3 - 4 characters.*/
*pGuidStr++ = '-'; 
for(i = 0; i < 4; i++, pGuidStr++)
((*pGuidStr = (rand() % 16)) < 10) ? *pGuidStr += 48 : *pGuidStr += 55;

/*Data4 - 4 characters.*/
*pGuidStr++ = '-'; 
for(i = 0; i < 4; i++, pGuidStr++)
((*pGuidStr = (rand() % 16)) < 10) ? *pGuidStr += 48 : *pGuidStr += 55;

/*Data5 - 12 characters.*/
*pGuidStr++ = '-'; 
for(i = 0; i < 12; i++, pGuidStr++)
((*pGuidStr = (rand() % 16)) < 10) ? *pGuidStr += 48 : *pGuidStr += 55;

*pGuidStr++ = '}'; 
*pGuidStr = '\0'; 
}

Автор: xvr 18.1.2011, 16:43
Цитата(Dem_max @  18.1.2011,  15:57 Найти цитируемый пост)
http://www.codeproject.com/KB/mcpp/guid.aspx

На GUID будет похоже, но не более. Для его генерации используются более случайные генераторы и немного другие способы.

Вот http://en.wikipedia.org/wiki/Uuid глянь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)