2017-05-09 108 views
1

我是新來的C++只有一個項目。中文字母Uuid轉換結果

插件需要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

+0

看看[這裏](http://stackoverflow.com/questions/3452272/convert-boostuuid-to-char)可能是它可以幫助你。 – Zelnes

回答

0

你被錯誤地鑄造guidStr這是charLPCTSTR數組,它是一個指向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()轉換爲字符串。