void getFolderGuid(string input, GUID& output) {
sscanf_s(input.c_str(),
R"({%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X})",
&output.Data1, &output.Data2, &output.Data3, &output.Data4[0], &output.Data4[1], &output.Data4[2],
&output.Data4[3], &output.Data4[4], &output.Data4[5], &output.Data4[6], &output.Data4[7]);
}
void getFolderGuid2(string input, GUID& output) {
unsigned long p0;
int p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
int ret = sscanf_s(input.c_str(), R"({%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X})",
&p0, &p1, &p2, &p3, &p4, &p5, &p6, &p7, &p8, &p9, &p10);
output.Data1 = (unsigned long)p0;
output.Data2 = (unsigned short)p1;
output.Data3 = (unsigned short)p2;
output.Data4[0] = (unsigned char)p3;
output.Data4[1] = (unsigned char)p4;
output.Data4[2] = (unsigned char)p5;
output.Data4[3] = (unsigned char)p6;
output.Data4[4] = (unsigned char)p7;
output.Data4[5] = (unsigned char)p8;
output.Data4[6] = (unsigned char)p9;
output.Data4[7] = (unsigned char)p10;
}
int main() {
GUID result;
getFolderGuid("{08AA12D5-8F98-4DAB-A4FC-980B150A5DC8}", result);
}
方法1字数少,但是编译严格的情况下回显示02x和char不匹配。
此时可改用方法2