2011-10-05 5 views
3

나는 이것이 단순한 sooo라고 확신하지만 문자열이 쉽고 현재는 관리되지 않는 세상으로 작은 여행을하고있는 C# 배경에서 왔습니다. 매우 혼란 스럽습니다.2 wchar_t 배열을 비교

기본적으로 EnumDisplayDevices를 사용하여 사용 가능한 장치를 나열하고 있으므로 특정 어댑터를 대상으로하고 싶습니다. DeviceString과 DeviceName을 일부 알고있는 값과 비교하여 올바른 어댑터가 있는지 확인해야합니다.

strcmp 나던 if(devName == theDisplay.DeviceName) 그래서 난이 넓은 문자로 작업하는 것 -

하지만 난처한 상황에 빠진하고, 나는

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

하지만 직접 비교가 작동하지 않는 등의 알려진 값을 ... 정의 무엇을해야할지 모르겠다. 아무도 이걸 어떻게 할 수 있는지 안다.

감사

답변

11

std::wstring는, 그것이 operator==을 가지고 있습니다.

+0

이것은 2 std :: wstrings를 사용하여 나에게 도움이되었다. : if (devName.compare (dn) == 0) –

+0

@john :'if (devName == dn)'을 사용해야한다. – Puppy

+0

나는 그렇지 않다. OP에서 "C# 문자열은 간단합니다"라고 말하면 웃을 지 울 것인지, 그리고 간단한 비교를 위해이 모든 멤버 함수를 말도 안한다고 써야합니다. 내가 말할 수있는 한, C++은's1 == s2'를 가진 정상적인 사람과 같은 문자열을 비교할 수있는 소수의 C와 유사한 언어 중 하나입니다. –

0

Windows 셸에는 넓은 문자를 비교하기위한 문자열 기능이 있습니다. 시도하십시오 StrCmpN().

+0

아무도 가난한 shlwapi에 대한 사랑이 없습니다. –

8

당신이 strcmp을위한 비주얼 스튜디오 도움말을 선택하면, 당신이 문자열 비교 3 개 함수를 나열 찾을 수 있습니다 : strcmp, wcscmp_mbscmp을. 찾고있는 사람은 wcscmp입니다.