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

신고
by 흥배 2012.10.18 09:00
| 1 |

티스토리 툴바