c++ string 转换成 guid

news/2024/9/18 3:50:25/文章来源:https://www.cnblogs.com/rebrobot/p/18408993

 

 

在C++中,将一个字符串转换为GUID(Globally Unique Identifier)可以通过以下方法实现。GUID通常是128位(16字节)的标识符,以标准格式表示,例如:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。在C++中,常用的库之一是Windows API,它提供了处理GUID的相关功能。

这里是一个示例代码,将字符串转换为GUID:

#include <iostream>
#include <windows.h> // Windows API 头文件
#include <objbase.h> // CoCreateGuid 和 StringFromGUID2 等函数的头文件// 自定义函数将字符串转换为 GUID
bool StringToGUID(const std::string& str, GUID& guid) {// 检查输入字符串的长度是否符合 GUID 的标准格式(36 字符)if (str.length() != 36) {return false;}WCHAR wstr[39]; // 用于存储带大括号的宽字符字符串swprintf_s(wstr, 39, L"{%S}", str.c_str()); // 将字符串转换为带大括号的宽字符字符串HRESULT hr = CLSIDFromString(wstr, &guid); // 尝试将字符串转换为 GUIDreturn SUCCEEDED(hr); // 检查转换是否成功
}int main() {std::string input = "550e8400-e29b-41d4-a716-446655440000"; // 示例字符串GUID guid;if (StringToGUID(input, guid)) {std::cout << "转换成功!" << std::endl;// 输出 GUIDLPOLESTR guidString;StringFromCLSID(guid, &guidString); // 将 GUID 转换为字符串std::wcout << L"GUID: " << guidString << std::endl;CoTaskMemFree(guidString); // 释放分配的内存} else {std::cout << "转换失败,输入字符串格式错误。" << std::endl;}return 0;
}

  

 

c++ guid 转换成 string

 

#include <iostream>
#include <windows.h> // Windows API 头文件
#include <objbase.h> // CoCreateGuid 和 StringFromGUID2 等函数的头文件// 自定义函数将 GUID 转换为 std::string
std::string GUIDToString(const GUID& guid) {char guid_cstr[39]; // 用于存储 GUID 字符串,包含终止符为39字节snprintf(guid_cstr, sizeof(guid_cstr),"%08x-%04x-%04x-%04x-%012llx",guid.Data1, guid.Data2, guid.Data3,(guid.Data4[0] << 8) | guid.Data4[1],(static_cast<unsigned long long>(guid.Data4[2]) << 40) |(static_cast<unsigned long long>(guid.Data4[3]) << 32) |(static_cast<unsigned long long>(guid.Data4[4]) << 24) |(static_cast<unsigned long long>(guid.Data4[5]) << 16) |(static_cast<unsigned long long>(guid.Data4[6]) << 8) |static_cast<unsigned long long>(guid.Data4[7]));return std::string(guid_cstr); // 返回 C++ 字符串
}int main() {GUID guid;// 生成一个新的 GUIDCoCreateGuid(&guid);// 将 GUID 转换为字符串std::string guidStr = GUIDToString(guid);std::cout << "GUID: " << guidStr << std::endl;return 0;
}

  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795660.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图与网路——最大流问题精解

容量网络(Capacity Network)是一种特殊的有向图结构,其中每条边都有一个容量(Capacity),表示该边上可以通过的最大流量。在这种网络中,流量(Flow)是指从源点(Source)通过边到达汇点(Sink)的实际传输量。容量网络中的边具有方向性,且每条边的流量不能超过其容量。…

C++中的数组,字符串数组,pair数组

1.C++中的字符串数组: 2. C++中的常量数组 这个const pair<int, string> valueSymbols[]定义了一个常量数组,数组中的每个元素都是一个pair<int, string>类型的对象。pair是C++标准模板库(STL)中的一个模板类,用于将两个值组合成一个单一的对象。在这个特定的…

TensorFlow深度学习框架改进K-means、SOM自组织映射聚类算法及上海招生政策影响分析研究|附代码数据

全文链接:https://tecdat.cn/?p=37652 原文出处:拓端数据部落公众号 分析师:Chen Zhang在教育政策研究领域,准确评估政策对不同区域和学生群体的影响至关重要。2021 年上海市出台的《上海市初中学业水平考试实施办法》对招生政策进行了调整,其中名额分配综合评价模块的…

【python脚本】springboot检测脚本

原创 CatalyzeSecimport requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) session = requests.session()# 从文本文件中读取 with open(dic.txt, r) as file:paths = file.readlines()# 移除每个末尾的换行符 paths = [path.str…

STM32学习笔记——中断

中断:在主程序运行过程中,出现了特定事件(例如发生已经预知的一些情况),从而转入中断程序中,处理完成后再回到主程序中继续执行。(频繁的中断函数会影响主程序的运行,所以中断函数一边不处理特别复杂的逻辑) EXTI(Extern Interrupt)外部中断 支持的触发方式:上升沿…

面试-JS Web API-DOM

概览DOM(Document Object Model)DOM是哪种数据结构? ---树🌳 常用的API attr和property区别 一次性插入多个DOM节点?DOM节点操作DOM节点的property 通过获取JS属性来改变样式or页面渲染形式。DOM节点的attribute 修改节点的属性。建议尽量用property操作。

送给测试行业朋友们的一些中肯建议

在快速发展的科技时代,软件测试行业也在不断变化。如果你是一名测试人员,或正在考虑进入这个行业,你是否感到迷茫?该如何提升自己,以应对未来的挑战?今天,我为所有测试行业的朋友们带来一些切实的建议,助你们走得更远。 作为测试人员,你是否经常面对需求变化、测试工具…

【Azure Cloud Service】在Azure云服务中收集CPU监控指标和IIS进程的DUMP方法

问题描述 在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?问题解答 一:收集云服务中CPU的性能数据 远程登录(RDP)到云服务的实例上,使用管理员身份运行…

Blazor开发框架Known-V2.0.10

Known今天迎来了2.0的第11个版本,同时网站网址和板块也进行了一次升级改造,虽不完美,但一直在努力改变,之前一直在完善框架功能,忽略了文档的重要性,所以这次更新了文档和API。交流互动板块也在进行当中,尽请期待。官方网站:http://known.org.cn 最新版本:V2.0.10下面…

个人项目:论文查重

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标 独立完成一个论文查重的个人项目;在项目开发中学习PSP表格的使用;学习使用Github仓库进行代码管…