검색결과 리스트
CompareStringEx에 해당되는 글 1건
- 2012.10.18 CompareStringEx로 문자열로 된 숫자 비교하기
Windows Vista 부터 새로 생긴 API로 CompareStringEx 라는 것이 있습니다.
이 함수는 이름을 보면 알듯이 문자열을 비교하는 것인데 일반적인 문자열 비교함수와 조금 다른 점이 있습니다.
일반적인 문자열 비교에서는 문자열 "10"과 문자열 "3"을 비교하면 문자열 "3"이 더 큰 것으로 나옵니다.
그러나 보통 위 문자열을 비교한다면 숫자 비교처럼 결과가 나오기 바라는 경우가 많을 것 입니다.
이때 CompareStringEx를 사용하면 좋습니다.
바로 예제 들어갑니다.^^
#include <windows.h>
#include <iostream>
int main()
{
setlocale(LC_ALL, "Korean");
wchar_t strResult[128] = {0,};
wchar_t CSTR_RET[4][32] = { L"에러", L"작다", L"같다", L"크다" };
int iCompareResult = 0;
// 숫자 비교
wchar_t szNumString10[16] = L"10";
wchar_t szNumString3[16] = L"3";
iCompareResult = CompareStringEx(LOCALE_NAME_SYSTEM_DEFAULT, SORT_DIGITSASNUMBERS,
szNumString10, -1, szNumString3, -1, NULL, NULL, 0);
wsprintf(strResult, L"CompareStringEx %s는 %s보다 %s", szNumString10, szNumString3, CSTR_RET[iCompareResult] );
std::wcout << strResult << std::endl << std::endl;
iCompareResult = CompareStringEx(LOCALE_NAME_SYSTEM_DEFAULT, 0,
szNumString10, -1, szNumString3, -1, NULL, NULL, 0);
wsprintf(strResult, L"CompareStringEx %s는 %s보다 %s", szNumString10, szNumString3, CSTR_RET[iCompareResult] );
std::wcout << strResult << std::endl;
return 0;
}
< 결과 >
결과를 보면 알 수 있듯이 CompareStringEx를 사용할 때 두 번째 인수로 비교 플래그 값을 설정할 때 SORT_DIGITSASNUMBERS 을 사용하면 문자열 비교를 숫자의 크기로 비교해 줍니다.^^
CompareStringEx
MSDN : http://msdn.microsoft.com/en-us/library/dd317761%28VS.85%29.aspx
댓글