Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ string ==와 compare()의 차이점은 무엇입니까?

<시간/>

C++에서는 compare() 함수와 ==연산자를 사용하여 두 문자열을 비교할 수 있습니다. 그렇다면 질문은 왜 두 가지 다른 방법이 있습니까? 차이점이 있나요?

compare()와 ==연산자 사이에는 몇 가지 기본적인 차이점이 있습니다. C++에서 ==연산자는 두 문자열이 동일한지 여부를 확인하기 위해 문자열에 대해 오버로드됩니다. 동일하면 1을 반환하고, 그렇지 않으면 0을 반환합니다. 따라서 Boolean 유형의 함수와 같습니다.

compare() 함수는 두 가지 다른 것을 반환합니다. 둘 다 같으면 0을 반환하고, 문자 s와 t에 대해 불일치가 발견되면 s가 t보다 작으면 -1을 반환하고, 그렇지 않으면 s가 t보다 크면 +1을 반환합니다. ASCII 코드를 사용하여 일치 여부를 확인합니다.

위의 논의에 대한 아이디어를 얻기 위해 예를 살펴보겠습니다.

예시 코드

#include <iostream>
using namespace std;

int main() {
   string str1 = "Hello";
   string str2 = "Help";
   string str3 = "Hello";

   cout << "Comparing str1 and str2 using ==, Res: " << (str1 == str2) << endl;//0 for no match
   cout << "Comparing str1 and str3 using ==, Res: " << (str1 == str3) << endl;//1 for no match

   cout << "Comparing str1 and str2 using compare(), Res: " << str1.compare(str2) << endl;//checking smaller and greater
   cout << "Comparing str1 and str3 using compare(), Res: " << str1.compare(str3) << endl;//0 for no match
}

출력

Comparing str1 and str2 using ==, Res: 0
Comparing str1 and str3 using ==, Res: 1
Comparing str1 and str2 using compare(), Res: -1
Comparing str1 and str3 using compare(), Res: 0