C++에서 두 문자열을 비교해야 하는 경우가 자주 있습니다. 다행히 C++은 string 클래스를 기본으로 제공하며, 표준 라이브러리에는 문자열 비교를 위한 compare() 함수가 포함되어 있습니다.
compare() 함수는 두 문자열의 문자를 처음부터 하나씩 순서대로 검사합니다. 검사 중 일치하지 않는 문자가 발견되면 그 차이를 나타내는 0이 아닌 값을 반환하고, 모든 문자가 일치하면 0을 반환합니다. 반환값의 부호를 통해 어느 문자열이 사전순으로 더 큰지도 알 수 있습니다.
예제 코드
다음 예제는 compare() 함수를 활용하여 두 문자열을 비교하고 그 결과를 출력하는 방법을 보여줍니다.
#include<iostream>
using namespace std;
void compareStrings(string s1, string s2) {
int result = s1.compare(s2);
if (result != 0)
cout << s1 << " 는 " << s2 << " 와 같지 않습니다" << endl;
else
cout << "두 문자열은 같습니다";
if (result > 0)
cout << s1 << " 이 " << s2 << " 보다 큽니다 (차이: " << result << ")" << endl;
else if (result < 0)
cout << s2 << " 이 " << s1 << " 보다 큽니다 (차이: " << result << ")" << endl;
}
int main() {
string s1("hello");
string s2("helLo");
compareStrings(s1, s2);
}실행 결과
hello 는 helLo 와 같지 않습니다 hello 이 helLo 보다 큽니다 (차이: 1)
반환값 해석 방법
compare() 함수의 반환값은 다음과 같이 해석할 수 있습니다.
- 0: 두 문자열이 완전히 동일함
- 양수: 호출한 문자열(s1)이 비교 대상 문자열(s2)보다 사전순으로 뒤에 위치함
- 음수: 호출한 문자열(s1)이 비교 대상 문자열(s2)보다 사전순으로 앞에 위치함
주의할 점
compare() 함수는 대소문자를 구분합니다. 위 예제에서 'hello'와 'helLo'는 소문자 'l'과 대문자 'L'이 다르기 때문에 서로 다른 문자열로 판단됩니다. 대소문자를 구분하지 않고 비교하려면 두 문자열을 미리 toupper()나 tolower() 등으로 변환한 후 비교하는 것이 좋습니다.