2011-10-05 121 views
3

我確定這很簡單,但我來自c#背景,字符串很容易,現在我正在進入一個非託管世界的小旅行,我很困惑。比較2 wchar_t數組

本質上,我使用EnumDisplayDevices來列出可用設備,我想定位一個特定的適配器,因此我需要比較DeviceString和DeviceName與一些已知值,以查看我是否擁有正確的適配器。

但我很爲難,我所定義的已知值這樣...

wchar_t devName[] = L"Intel(R) HD Graphics Family"; 

但直接比較不起作用 - if(devName == theDisplay.DeviceName)

strcmp似乎並不具有廣泛的字符來工作,所以我有不知道該怎麼做,誰知道如何做到這一點?

感謝

回答

11

使用std::wstring,它有一個operator==

+0

這對我來說通過使用2 std :: wstrings如此:if(devName.compare(dn)== 0) –

+0

@john:你應該只使用'if(devName == dn)' – Puppy

+0

我不是當OP聲明「在C#中的字符串很簡單」時,確定是否要大笑或哭泣,然後你必須編寫所有這個成員函數的廢話來進行簡單的比較。據我所知,C++是少數類C語言之一,你可以比較像s1 == s2'這樣的理智的人。 –

0

Windows Shell有一堆用於比較寬字符的字符串函數。試試StrCmpN()

+0

沒有人對可憐的shlwapi有任何愛。 –

8

如果您檢查Visual Studio幫助strcmp,您會發現它列出了3個函數來比較字符串:strcmp,wcscmp_mbscmp。你正在尋找的是wcscmp