2017-05-09 3 views
1

私はわずか1つのプロジェクトのためにC++が初めてです。Uuidの変換結果が中国語の文字

C++のプラグインのために必要とされ、ここで私は、UUIDを作成する必要があります。それは私がプラグインを作成する必要があったのとほぼ唯一のものです。

GUIDからchineese手紙で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

あなたは間違ってあなたがUnicode用にコンパイルされている場合wchar_tへのポインタであるLPCTSTRcharの配列であるguidStrをキャストしています。あなたはキャストを取り除くことができるような機能の

使用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()を使用しています。

関連する問題