다음을 통해 공유


CompareStringW 함수(stringapiset.h)

식별자로 지정된 로 에 대해 두 개의 문자열을 비교합니다.

주의CompareString을 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 올바르게 비교되지 않은 문자열은 잘못된 입력을 생성할 수 있습니다. 예를 들어 이 함수는 이진 표현에서 고유한 두 문자열이 언어적으로 동일할 수 있으므로 비언어적 비교에 사용할 때 보안 문제를 제기할 수 있습니다. 애플리케이션은 문자열을 사용하기 전에 유효성을 테스트해야 하며 오류 처리기를 제공해야 합니다. 자세한 내용은 보안 고려 사항: 국가별 기능을 참조하세요.
 
참고 유니코드와의 호환성을 위해 애플리케이션은 CompareStringEx 또는 유니코드 버전의 CompareString을 선호해야 합니다. CompareStringEx를 선호하는 또 다른 이유는 Microsoft가 상호 운용성을 위해 새 로캘에 대한 로캘 식별자 대신 로캘 이름을 사용하도록 마이그레이션하기 때문입니다. Windows Vista 이상에서만 실행되는 모든 애플리케이션은 CompareStringEx를 사용해야 합니다.
 

구문

int CompareStringW(
  [in] LCID                              Locale,
  [in] DWORD                             dwCmpFlags,
  [in] _In_NLS_string_(cchCount1)PCNZWCH lpString1,
  [in] int                               cchCount1,
  [in] _In_NLS_string_(cchCount2)PCNZWCH lpString2,
  [in] int                               cchCount2
);

매개 변수

[in] Locale

비교에 사용되는 로캘의 로캘 식별자입니다. MAKELCID 매크로를 사용하여 로캘 식별자를 만들거나 다음 미리 정의된 값 중 하나를 사용할 수 있습니다.

[in] dwCmpFlags

함수가 두 문자열을 비교하는 방법을 나타내는 플래그입니다. 자세한 정의는 CompareStringExdwCmpFlags 매개 변수를 참조하세요.

[in] lpString1

비교할 첫 번째 문자열에 대한 포인터입니다.

[in] cchCount1

종료 null 문자를 제외하고 lpString1로 표시된 문자열의 길이입니다. 이 값은 ANSI 버전의 함수에 대한 바이트와 유니코드 버전의 와이드 문자를 나타냅니다. 문자열이 null로 끝나는 경우 애플리케이션에서 음수 값을 제공할 수 있습니다. 이 경우 함수는 길이를 자동으로 결정합니다.

[in] lpString2

비교할 두 번째 문자열에 대한 포인터입니다.

[in] cchCount2

종료 null 문자를 제외하고 lpString2로 표시된 문자열의 길이입니다. 이 값은 ANSI 버전의 함수에 대한 바이트와 유니코드 버전의 와이드 문자를 나타냅니다. 문자열이 null로 끝나는 경우 애플리케이션에서 음수 값을 제공할 수 있습니다. 이 경우 함수는 길이를 자동으로 결정합니다.

반환 값

CompareStringEx에 설명된 값을 반환합니다.

설명

CompareStringEx에 대한 설명을 참조하세요.

애플리케이션이 CompareString의 ANSI 버전을 호출하는 경우 함수는 제공된 로캘의 기본 코드 페이지를 통해 매개 변수를 변환합니다. 따라서 애플리케이션은 CompareString을 사용하여 UTF-8 텍스트를 처리할 수 없습니다.

일반적으로 대/소문자를 구분하지 않는 비교의 경우 CompareString 은 로캘이 터키어 또는 아제르바이잔어인 경우에도 소문자 "i"를 대문자 "I"에 매핑합니다. NORM_LINGUISTIC_CASING 플래그는 터키어 또는 아제르바이잔어에 대해 이 동작을 재정의합니다. 이 플래그가 터키어 또는 아제르바이잔어와 함께 지정된 경우 LATIN SMALL LETTER DOTLESS I(U+0131)는 라틴어 대문자 I(U+0049)의 소문자 형식이고 라틴어 SMALL LETTER I(U+0069)는 위에 있는 LATIN CAPITAL LETTER I WITH DOT(U+0130)의 소문자 형태입니다.

Windows 8 시작: 함수의 ANSI 버전은 Winnls.h에서 선언되고 유니코드 버전은 Stringapiset.h에 선언됩니다. Windows 8 전에 두 버전 모두 Winnls.h에서 선언되었습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 stringapiset.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CompareStringEx

애플리케이션에서 정렬 처리

국가 언어 지원

국가 언어 지원 함수

보안 고려 사항: 국가별 기능

유니코드 정규화를 사용하여 문자열 표시