4
我正在C中使用Win32 API,并且需要将GUID结构转换为LPCSTR。我对Win32相对来说比较新,并且没有找到关于这种类型转换的很多信息。将GUID结构转换为LPCSTR
我确实设法使用StringFromGUID2函数将GUID转换为OLECHAR(请参阅下面的代码片段),但坚持进一步转换为LPSCSTR。我不太确定我是否与OLECHAR一起朝着正确的方向前进,但目前看起来合情合理。
GUID guid;
OLECHAR wszGuid[40] = {0};
OLECHAR szGuid[40]={0};
LPCSTR lpcGuid;
CoCreateGuid(&guid);
StringFromGUID2(&guid, wszGuid, _countof(wszGuid));
由于雷米。在第二种方法中,您使用sprintf函数与第一种方法中的两个函数调用(StringFromGUID2和WideCharToMultiByte)进行比较。从表面上看,第二种方法似乎更加紧凑和简洁,这使我相信它可能会更快,但我不确定。对此有何想法? – user2177565
如果速度是一个问题,请使用分析器。 –
我不知道,但我敢打赌,第二个比较慢,因为它不是专用的,'sprintf'必须解析输入字符串并决定如何处理额外的参数,但另一个是专门构建的。 - 最快的方法是使用第二种方法中明显的逻辑构建一个新的目标构建函数,该函数将GUID直接转换为ANSI。 – Motes