2017-05-09 2 views
1

Ich bin neu in C++ für nur ein Projekt.Uuid Konvertierungsergebnisse in chinesischen Buchstaben

C++ wird für ein Plugin benötigt und hier muss ich eine UUID erstellen. Das ist fast das einzige, wofür ich das Plugin erstellen muss.

Meine Konvertierung von Guid zu Str ergibt chineese Buchstaben. Das große Problem ist, dass es keine Möglichkeit gibt, das Plugin zu debuggen.

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)); 

Wenn ich statt dieser UUID eine Zeichenfolge einfüge, sieht die Zeichenfolge normal aus.

Display Sample with the problem

+0

Werfen Sie einen Blick [hier] (http://Stackoverflow.com/questions/3452272/convert-boostuuid-to-char) möglicherweise könnte es Ihnen helfen. – Zelnes

Antwort

0

Sie falsch guidStr werfen, die eine Reihe von char zu LPCTSTR ist, die einen Zeiger auf wchar_t ist, wenn Sie für Unicode kompilieren.

Verwenden wchar_t Array und breite Versionen der Funktionen, so dass Sie den Guss entfernen:

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); 

Alternativ verwenden StringFromCLSID() auf Zeichenfolge zu konvertieren.