我想将CLSID转换为c ++中的* char,以便可以在文本框中显示它。我是c ++的新手,所以请尽可能简化。
谢谢
解决方案:
/* 128 bit GUID to human-readable string */
char * guid_to_str(const GUID * id, char * out) {
int i;
char * ret = out;
out += sprintf(out, "%.8lX-%.4hX-%.4hX-", id->Data1, id->Data2, id->Data3);
for (i = 0; i < sizeof(id->Data4); ++i) {
out += sprintf(out, "%.2hhX", id->Data4[i]);
if (i == 1) *(out++) = '-';
}
return ret;
}
这假定输出缓冲区已被分配,并且其大小应为37字节(包括空终止符)。
输出形式为 "75B22630-668E-11CF-A6D9-00AA0062CE6C"
用法示例:
GUID g;
char buffer[37];
std::cout << guid_to_str(&g, buffer);
笔记:
该代码存在是因为我必须在Linux下实现GUID解析,否则我将使用StringFromCLSID
@krowe提到的Windows API函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句