자세한 설명은 lstrcmp 및 알파벳 문자

만료된 KB 콘텐츠 고지 사항

이 문서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 작성되었습니다. 따라서 이 문서는 “있는 그대로" 제공되며 더 이상 업데이트되지 않습니다.

증상

소문자 'e' 나타내는-1 영어 returns에 다음 함수를 실행 대문자 'Z' 보다 작습니다.
   lstrcmp("e","Z");
ASCII 정렬을 사용 하 여 문자의 순서가 반대입니다. 그러나 올바른 동작이 나 lstrcmp()는.

원인

실제 사전 마찬가지로 같은 방법으로 비교를 수행 하는 lstrcmp(). 문자 소문자에서를 먼저 비교 됩니다 다음 특정 세부 정보 (예: 대문자 또는 소문자) 비교 됩니다.


첫 번째 기본 및 보조 가중치를 설정 하 여 해당 비교를 수행 하는 lstrcmp(). 기본 가중치를 대문자로 변환한 후 문자 값을입니다. 보조 가중치 여부를 문자 원래 소문자로 또는 대문자로 설명 합니다.


표준 ASCII 표에서 지침으로 사용 하 여 (0... 9ABC... XYZabc... xyz)를 lstrcmp의 예:
"A" < "a" < "B" < "b"
"Aaa" < "aaa" < "Aab"
첫 번째 예제에서는 "A"는 "a" 보다 작은 있기 때문에.

  1. 문자를 모두 대문자로 변환 됩니다.
  2. 기본 가중치는 비교 하 고 같은 발견.
  3. 기본 가중치 값이 같으면 때문에 보조 가중치는 비교 됩니다. 다음 "A" 인지 "a" 보다 작은 "a"는 높은 ASCII 차트에서 결정 됩니다.
"또한 첫 번째 예제에서는 a"는 "B" 보다 작은 있기 때문에.

  1. 문자를 모두 대문자로 변환 됩니다.
  2. 기본 가중치가 비교 되 고 "A" 보다 "B" ASCII 차트에서 작은지 결정. 없는 보조 가중치 비교가 수행 됩니다.
두 번째 예제에서 "Aaa"를 사용 하면 "aaa" "A"와 "a" 비교에서 표시 된 동일한 논리 보다 작습니다.


두 문자를 비교 하 고 같은지 때이 "충돌" 라고 고 "지연 된 데이터 비교"는 보조 가중치를 사용 하 여.

추가 예제

   e,a  --> E,A --> E>A = 1
e,e --> E,E --> E=E = 0 Because they are equal, the case is
checked (secondary weight).
e,z --> E,Z --> E<Z = -1

e,A --> E,A --> E>A = 1
e,E --> E,E --> E=E = 1 Because they are equal, the case is
checked (secondary weight).
e,F --> E,F --> E<F = -1

해결 방법

대/소문자를 사용 하 여 ASCII 값을 정렬 해야 할 경우 C 런타임 함수를 strcmp() 또는 _fstrcmp()를 사용 합니다.


또한, 동아시아 Windows 기반 응용 프로그램을 영어 및 로컬 언어로 기술을 정렬이 사전을 채택 합니다.


알파벳 이외의 문자로 사용 되는 정렬 순서에 대 한 자세한 내용은이 기술 자료에서 다음 단어 쿼리 악센트 부호가 있는 문자 및 국제 언어에서 문자:
lstrcmpi 및 국제 및 정렬
속성

문서 ID: 96748 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백