본문 바로가기
C언어

C++ strcmp 문자열 비교하기

by 여름코딩 2023. 1. 28.
반응형

안녕하세요 판타지코딩입니다!

 

오늘은 C++의 문자열을 비교하는 방법에 대해서 알아보겠습니다.

 

strcmp 문자열 비교함수

 

문자열을 비교하는 방법은 여러 가지가 있습니다. 우선 두 가지 문자열을 0번째 인덱스부터 비교하면서 같을 경우와 다를 경우를 코드로 작성하는 방법이 있습니다. 이 경우에는 for문이나 while문을 활용하면 문자열의 길이 만큼 비교를 반복하겠죠? 다음 방법은 바로 strcmp 함수를 활용하는 것입니다. 

 

1. strcmp의 형태

strcmp(str1, str2);

strcmp 함수는 문자열 두 개를 인자로 받아 비교합니다. 이 함수를 활용하기 위해서는 헤더 파일인 string.h를 추가해주어야 합니다.

 

2. strcmp 활용 방법

char str1[10] = "Hi";
char str2[10] = "Hi";
char str3[10] = "Hello";

cout << strcmp(str1, str2) << endl;
cout << strcmp(str1, str3) << endl;
cout << strcmp(str3, str1) << endl;

strcmp를 활용해서 코드를 작성해 보았습니다. 비교할 문자열을 총 3개 생성했습니다. 첫 번째로 비교할 문자열은 str1과 str2입니다. 두 문자열은 같은 문자열이기 때문에 '0'을 반환합니다. 두번째로 비교할 문자열은 str1과 str3로 "Hi"와 "Hello"입니다. 인덱스 순서대로 비교해보면 첫 번째 문자인 'H'는 동일하고, 두 번째 문자인 'i'와 'e' 중 'e'가 더 앞에 있으므로 '작다'고 할 수 있습니다. 앞의 문자가 더 크면 양수 1을 반환합니다. 마지막으로 비교할 문자열은 str3와 str1입니다. "Hi"와 "Hello"의 순서를 바꿔서 "Hello"를 앞에 두고, "Hi"를 뒤에 뒀습니다. 그럼 역시 비교 대상은 'e'와 'i'입니다. 이번에는 뒤에 것이 더 크기 때문에 이 때는 음수 -1을 반환합니다. 그러므로 이 코드의 출력 결과는 다음과 같습니다.

0
1
-1

정리해보면 문자열이 같을 때는 '0', 다를 때는 양수 또는 음수 1을 출력합니다. 앞의 문자열이 더 크다면 양수 1, 뒤의 문자열이 더 크다면 음수인 -1을 출력합니다. 그렇다면 이것은 어떤 기준으로 비교하는 것일까요? 위에서 비교 과정을 가볍게 설명했지만 조금 더 자세히 알아보겠습니다.

 

3. strcmp의 비교 과정

strcmp는 문자열을 비교하는 함수이고, 비교하는 것은 동일한 문자열인지와 문자열의 크기인 것으로 보입니다. 문자열이 주어지면 첫 번째 문자부터 비교하면서 크기를 비교하고 끝까지 다른 문자열이 없다면 0을 출력합니다. 그렇다면 문자열의 크기는 어떤 기준으로 비교하는 것일까요? 바로 아스키코드 값을 기준으로 합니다. 간단하게 생각하면 알파벳의 경우 흔히 알고 있는 순서대로 정렬했을 때 뒤 쪽에 있는 것일수록 크기가 크다고 판단합니다. 문자와 숫자를 아스키코드 값으로 변환시켜서 어떤 값이 출력되는지 확인해 보시면 쉽게 이해가 되실겁니다.

 

그럼 오늘은 문자열 비교 함수인 strcmp의 활용 방법을 알아보았습니다.

 

감사합니다!

반응형