drach 发表于 2008-4-11 15:27

请问用c如何自动生成一定格式的字符串?

想生成一串urn格式的字符串格式为urn:uuid:8-4-4-4-12bytes,例如urn:uuid:98190dc2-0890-4ef8-ac9a-5940995e6119

请问该如何实现?

cmh 发表于 2008-4-11 21:08

在windows平台下面可以用UuidCreate()自动生成UUID:
http://msdn2.microsoft.com/en-us/library/aa379205(VS.85).aspx

UNIX平台的也有类似函数,不过n年没用完全忘掉了$汗$

drach 发表于 2008-4-12 10:20

原帖由 cmh 于 2008-4-11 22:08 发表 http://www.dolc.de/forum/images/common/back.gif
在windows平台下面可以用UuidCreate()自动生成UUID:
http://msdn2.microsoft.com/en-us/library/aa379205(VS.85).aspx

UNIX平台的也有类似函数,不过n年没用完全忘掉了$汗$
这些我都知道,问题是我用的是tasking,不带这些函数:(

cmh 发表于 2008-4-12 17:59

那就没办法了。这玩意一般靠MAC-ADD之类号称唯一的硬件号生成,在各个系统上不一样。要么去网上搜搜吧,说不定有开源的库可以用

Server 发表于 2008-4-13 21:59

shfaye 发表于 2008-4-14 14:09

const int SIZE_CHAR = 8;//生成8 + 1位C Style字符串

const char CCH[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

string RandomStrGenerator(int SIZE_CHAR)
{
    srand((unsigned)time(NULL));

    char ch = {0};

    for (int i = 0; i < SIZE_CHAR; ++i)
    {
      int x = rand() % (sizeof(CCH) - 1);
      
      ch = CCH;
    }

    return ch;
}

然后自己看,先生成8, 加个CHAR &acute;-&acute;, 在生成4个,再加个CHAR &acute;-&acute;。。。。usw......

[ 本帖最后由 shfaye 于 2008-4-14 15:12 编辑 ]

cmh 发表于 2008-4-14 15:31

UUID重要的是唯一性不是随机性, 需要确保在本机, 局域网, 甚至广域网内唯一

shfaye 发表于 2008-4-14 16:32

http://greenbytes.de/tech/webdav/rfc4122.html

drach 发表于 2008-4-14 18:56

原帖由 shfaye 于 2008-4-14 15:09 发表 http://www.dolc.de/forum/images/common/back.gif
const int SIZE_CHAR = 8;//生成8 + 1位C Style字符串

const char CCH[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

string RandomStrGenerator(int SIZE_CHAR)
{
    srand(( ...
$送花$ $送花$

drach 发表于 2008-4-14 18:58

原帖由 cmh 于 2008-4-14 16:31 发表 http://www.dolc.de/forum/images/common/back.gif
UUID重要的是唯一性不是随机性, 需要确保在本机, 局域网, 甚至广域网内唯一

事实上我只需区别几个设备,所以不需要生成严格意义上的UUID$汗$
页: [1] 2
查看完整版本: 请问用c如何自动生成一定格式的字符串?