我只是一个项目的 C++ 新手。
插件需要 C++,在这里我必须创建一个 UUID。这几乎是我唯一需要为其创建插件的东西。
我从 guid 到 str 的转换结果是中文字母。 最大的问题是,没有调试插件的选项。
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 时,该字符串看起来很正常。
最佳答案
您错误地将 guidStr
这是一个 char
数组转换为 LPCTSTR
这是一个指向 wchar_t
的指针如果您正在为 Unicode 编译。
使用 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()转换为字符串。
关于c++ - 汉字Uuid转换结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43872705/