c++ - 汉字Uuid转换结果

标签 c++ windows visual-studio uuid chinese-locale

我只是一个项目的 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 时,该字符串看起来很正常。

Display Sample with the problem

最佳答案

您错误地将 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/

相关文章:

c++ - 一种检测滥用 POSIX pthreads API 而非 Helgrind 的工具

c++ - 检测极值 vector C+​​+

c++ - C++11 中不同类型对象的 std::array 替代方案

windows - 如何在 IntelliJ Windows 中使用 svn+ssh?

c# - 如何捕获未发送到标准输出的命令行文本?

c++ - 我的小型转储变得太大而无法被 Visual Studio 加载,我该如何解决这个问题?

c# - 在 Visual Studio 的 UnitTest 中解析服务器 SSL 证书时出现奇怪的问题

android - 适用于Android的交叉编译PALSIADE

不同操作系统上的python ctypes问题

sql-server - 在 ALTER DATABASE 语句中无效使用选项flush_interval_seconds