Я новичок в 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 () преобразовать в строку.
Других решений пока нет …