Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 관계 연산자를 활용한 문자열 객체 비교 방법


C++에서 두 문자열(string) 객체를 비교하는 방법을 알아보겠습니다. C++에는 편리한 string 클래스가 있으며, 표준 라이브러리에서는 문자열을 비교할 수 있는 compare() 함수도 제공합니다. 하지만 이번 글에서는 ==, !=, <, >, <=, >=와 같은 관계 연산자를 직접 사용해 보겠습니다.

이 연산자들은 문자열 전체를 한 번에 처리하는 것이 아니라, 앞에서부터 한 문자씩 순서대로 비교합니다. 각 문자의 값(아스키 코드 기준)이 같으면 다음 문자로 넘어가고, 처음으로 다른 문자가 나타나는 지점에서 대소 관계가 결정됩니다.

예제 코드

#include<iostream>
using namespace std;
void compareStrings(string s1, string s2) {
   if (s1 != s2)
      cout << s1 << " is not equal to "<< s2 << endl;
   else if(s1 == s2)
      cout << "Strings are equal";
   if (s1 > s2)
      cout << s1 << " is greater than "<< s2 << endl;
   else if(s1 < s2)
      cout << s2 << " is greater than "<< s1 << endl;
}
int main() {
   string s1("hello");
   string s2("helLo");
   compareStrings(s1, s2);
}

실행 결과

hello is not equal to helLo
hello is greater than helLo

결과 분석

s1은 "hello", s2는 "helLo"입니다. 두 문자열은 세 번째 문자까지는 동일하지만, 네 번째 문자에서 소문자 'l'(아스키 코드 108)과 대문자 'L'(아스키 코드 76)이 서로 다릅니다. 소문자가 대문자보다 아스키 코드 값이 크기 때문에, "hello"가 "helLo"보다 크다고 판정되는 것입니다.

이처럼 C++의 관계 연산자는 대소문자를 구분하며 사전순(lexicographical)으로 문자열을 비교합니다. 따라서 대소문자 구분 없이 비교하고 싶다면, 비교 전에 toupper() 또는 tolower() 등으로 문자열을 정규화하거나, 대소문자를 무시하는 별도의 비교 함수를 사용하는 것이 좋습니다.