C++ 문자열 비교 strcmp, strncmp 사용 방법

C++에서 두 개의 문자열이 같은지 비교하고 싶은 경우 strcmp, strncmp를 사용해 비교할 수 있습니다.

문자열을 비교하는 strcmp, strncmp 함수 사용방법을 알아보겠습니다.

  • strcmp – 대상 문자열과 비교 대상 문자열이 같은지 비교.
  • strncmp – 대상 문자열과 비교 대상 문자열이 같은지 비교. 비교할 문자열 길이를 지정가능.

 

strcmp와 strncmp 함수는 비교를 할 때 앞에서부터 아스키코드값으로 비교를 합니다.

그렇기 때문에 대소문자를 비교를 하며 어느 쪽 문자열 값이 큰 지도 비교가 가능합니다.

문자열의 비교는 문자열에 NULL값이 나올 때까지 합니다.

만약 문자열에 \0가 포함이 되어있다면 NULL의 아스키코드 값이 0이기 때문에 \0 앞에 문자열까지만 비교하게 됩니다.

 

strcmp

문자열 비교하는 strcmp 함수에 대해 살펴보겠습니다.

strcmp(비교 문자열 1, 비교 문자열 2)

 

strcmp 함수는 두 문자열이 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다.

첫 번째 파라미터로 전달한 비교 문자열 1이, 두 번째 파라미터로 전달한 비교 문자열 2 보다 크기가 큰 경우 양수를 반환합니다.

반대로 비교 문자열 2가 비교 문자열 1보다 큰 경우에는 음수를 반환합니다.

 

샘플 소스를 보겠습니다.

#include <stdio.h>
#include <cstring> 

int main()
{
    char str1[10] = "aaa";
    char str2[10] = "aaa";
    char str3[10] = "aab";

    int rs1 = strcmp(str1, str2);
    int rs2 = strcmp(str1, str3);
    int rs3 = strcmp(str3, str1);

    printf("결과1 : %d\n", rs1); 
    printf("결과2 : %d\n", rs2); 
    printf("결과3 : %d\n", rs3); 

    return 0;
}

 

결과

결과1 : 0
결과2 : -1
결과3 : 1

 

“aaa” 문자열과 “aaa” 문자열을 비교한 결과 같기 때문에 0이 반환되었습니다.

“aaa” 문자열과 “aab” 문자열을 비교한 결과 두 번째 파라미터인 “aab”가 크기 때문에 음수를 반환했습니다.

“aab” 문자열과 “aaa” 문자열을 비교한 결과 첫 번째 파라미터인 “aab”가 크기 때문에 양수를 반환했습니다.

 

strncmp

문자열 비교하는 strncmp 함수에 대해 살펴보겠습니다.

strcmp(비교 문자열 1, 비교 문자열 2, 비교 길이)

 

strncmp 함수도 두 문자열이 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다.

첫 번째 파라미터로 전달한 비교 문자열 1이, 두 번째 파라미터로 전달한 비교 문자열 2 보다 크기가 큰 경우 양수를 반환합니다.

반대로 비교 문자열 2가 비교 문자열 1보다 큰 경우에는 음수를 반환합니다.

 

샘플 소스를 보겠습니다.

#include <stdio.h>
#include <cstring> 

int main()
{
    char str1[10] = "aaa";
    char str2[10] = "aab";


    int rs1 = strncmp(str1, str2, 2);
    int rs2 = strncmp(str1, str2, 3);
    int rs2 = strncmp(str2, str1, 3);

    printf("결과1 : %d\n", rs1); 
    printf("결과2 : %d\n", rs2); 
    printf("결과3 : %d\n", rs3); 

    return 0;
}

 

결과

결과1 : 0
결과2 : -1
결과3 : 1

 

“aaa” 문자열과 “aab” 문자열을 2자리까지 비교한 결과 같기 때문에 0이 반환되었습니다.

“aaa” 문자열과 “aab” 문자열을 3자리까지 비교한 결과 두 번째 파라미터인 “aab”가 크기 때문에 음수를 반환했습니다.

“aab” 문자열과 “aaa” 문자열을 3자리까지 비교한 결과 첫 번째 파라미터인 “aab”가 크기 때문에 양수를 반환했습니다.

댓글