我只是一个项目的C ++新手。
插件需要C ++,在这里我必须创建一个UUID。这几乎是我唯一需要为其创建插件的东西。
我从guid到str的转换导致了chineese字母。 最大的问题是,没有调试插件的选项。
UUID guid;
CoCreateGuid(&guid);
char guidStr[40];
sprintf_s(
guidStr,
"%08X-%04hX-%04hX-%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]);
std::string s(guidStr);
pUID->szFieldValue.Set(LPCTSTR(guidStr));
当我输入一个字符串而不是这个uuid时,字符串看起来很正常。
答案 0 :(得分:0)
如果您正在为Unicode编译,那么guidStr
数组char
是LPCTSTR
的指针,这是wchar_t
的指针。
使用wchar_t
数组和广泛版本的函数,因此您可以删除强制转换:
UUID guid;
CoCreateGuid(&guid);
wchar_t guidStr[40];
swprintf_s(
guidStr,
L"%08X-%04hX-%04hX-%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]);
std::wstring s(guidStr);
pUID->szFieldValue.Set(guidStr);
或者,使用StringFromCLSID()转换为字符串。