c++生成GUID的实现

发布于 2021-11-15 02:18:33 字数 1297 浏览 854 评论 20

/*---------代码非原创------------*/
#include <string>
#include <stdio.h>
#include <iostream>

#include "uuid_test.hpp"

#ifdef WIN32
#include <objbase.h>
#else
#include <uuid/uuid.h>
#endif

using namespace std;

namespace ChinuxTeam
{
	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);
	}
}

 以上代码在其他程序员博客找到的,copy出来用,不怎么好使,

谁有过c++实现GUID的代码能分享的(不要依赖微软可以跨平台)的。

备注:以上代码中看到 using namespace std; namespace Chexxx; 命名空间的使用,

请问一下这种代码是不是在vs下使用的?就是依赖于微软的东西。

 

求c++实现GUID的代码,有点急,分享的大神小弟感激不尽。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(20

皇甫轩 2021-11-17 15:04:31

我晕。我是从高级语言开始学起的。

各自安好 2021-11-17 15:04:31

std= Standard Template Library,标准模板库。

跟操作系统没关系,linux有std,windows下有std,unix下也有std,而且用法都几乎一样。

另外,C++属于计算机高级语言呢。

LZ看来对C++不熟悉,找本入门的书先看看吧

反目相谮 2021-11-17 15:04:31

回复
不好意思...打错了

凡尘雨 2021-11-17 15:04:31

晕!std是Standard的缩写,标准模板库是STL

旧伤慢歌 2021-11-17 15:04:31

大哥,您能再帮我翻译一个东西吗?翻译成c++的一个方法 (C#)code:如上。

噩梦成真你也成魔 2021-11-17 15:04:31

Thank You

苍暮颜 2021-11-17 15:04:30

汗死。。这么有层次的问题后面居然跟着。。std是不是微软的。。

三月梨花 2021-11-17 15:04:22

回复
不好意思,再问一下,google关键字搜索什么

千笙结 2021-11-17 15:04:21

回复
C++ 获取本机MAC地址 C++ 获取本机IP地址

伴我心暖 2021-11-17 15:04:09

这种网上找的,很多类库内部的实现都是引用的微软

眼泪淡了忧伤 2021-11-17 15:03:56

回复
当然啦,获取mac和ip肯定要依赖于操作系统类库的,不然肯定获取不到。就要看你在哪个平台上开发软件了

够钟 2021-11-17 15:03:47

生成分布式全局唯一码?

一般是:MAC地址(12字节)+IP地址(12字节)+当前时间秒数(字节数自己定)+6位随机数

风透绣罗衣 2021-11-17 14:57:15

大哥,您有精简一点的代码吗? 我c++刚开始学,这样的代码我不会整理归纳到当前项目中去。

毁梦 2021-11-17 14:42:07

@曹小龙 3个头文件,两个源文件,最后一个是main,就是测试方法,不会整?

伪装你 2021-11-17 14:40:56

好多,看的好晕。不会整。我放弃 GUID了,我用简单的。 自行生成, 时间戳+随机码

输什么也不输骨气 2021-11-17 12:28:24
// 如示:翻译成c++
string CreateRandomNumber()
{
    string time = DateTime.Now.ToString("yyyyMMddHHmmssfff");
    string rand_num = new Random().Next(10000, 99999).ToString();
    return (time + randNum);
}

已下线请稍等 2021-11-17 08:44:30

随机数(前几位)总是一样,

绝影如岚 2021-11-17 06:02:23

int num = rand()%100000;改成:int num = rand()%100;就会多几位,看你是怎样的需求了

像你 2021-11-16 13:12:04
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
  
  
int main(int argc, char **argv)
{
  srand((int)time(0));   //设置时间种子
  int num = rand()%100000;   //生成100000内的随机数
  printf("rand num:%6dn", num);
  
  struct tm *p;
  time_t second;
  time(&second);

  p = localtime(&second);|//获取当前时间

  char buf[100] = {0};

  sprintf(buf, "%d-%d-%d %d:%d:%d_%06d", 1900+p->tm_year, 1+p->tm_mon, p->tm_mday,
	  p->tm_hour, p->tm_min, p->tm_sec, num);  //格式化时间和随机数字符串,存放在buf内
 
  printf("guid:%sn", buf);  //输出guid到控制台
 
  return 0;
 }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文