Результаты преобразования Uuid в китайские буквы

Я новичок в 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, строка выглядит нормально.

Показать образец с проблемой

1

Решение

Вы неправильно кастуетесь 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 () преобразовать в строку.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector