萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2537|回复: 10

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

[复制链接]
发表于 2008-4-11 16:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

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

请问该如何实现?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-11 22:08 | 显示全部楼层
在windows平台下面可以用UuidCreate()自动生成UUID:
http://msdn2.microsoft.com/en-us/library/aa379205(VS.85).aspx

UNIX平台的也有类似函数,不过n年没用完全忘掉了$汗$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-12 11:20 | 显示全部楼层
原帖由 cmh 于 2008-4-11 22:08 发表
在windows平台下面可以用UuidCreate()自动生成UUID:
http://msdn2.microsoft.com/en-us/library/aa379205(VS.85).aspx

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

这些我都知道,问题是我用的是tasking,不带这些函数:(
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-12 18:59 | 显示全部楼层
那就没办法了。这玩意一般靠MAC-ADD之类号称唯一的硬件号生成,在各个系统上不一样。要么去网上搜搜吧,说不定有开源的库可以用
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
头像被屏蔽

TA的专栏

发表于 2008-4-13 22:59 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-14 15: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[SIZE_CHAR + 1] = {0};

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

    return ch;
}

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

[ 本帖最后由 shfaye 于 2008-4-14 15:12 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-14 16:31 | 显示全部楼层
UUID重要的是唯一性不是随机性, 需要确保在本机, 局域网, 甚至广域网内唯一
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-14 17:32 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-14 19:56 | 显示全部楼层
原帖由 shfaye 于 2008-4-14 15:09 发表
const int SIZE_CHAR = 8;  //生成8 + 1位C Style字符串

const char CCH[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

string RandomStrGenerator(int SIZE_CHAR)
{
    srand(( ...

$送花$ $送花$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-14 19:58 | 显示全部楼层
原帖由 cmh 于 2008-4-14 16:31 发表
UUID重要的是唯一性不是随机性, 需要确保在本机, 局域网, 甚至广域网内唯一


事实上我只需区别几个设备,所以不需要生成严格意义上的UUID$汗$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-4-29 22:24 , Processed in 0.063520 second(s), 19 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表