[C++] string.compare() 문자열 비교

C++에서 string 객체를 사용하면 string::compare으로 문자열 비교를 할 수 있습니다.

아래와 같이 함수에 비교할 string 객체를 인자로 전달하면 됩니다.

int string::compare (const string& str) const

예를 들어, s1.compare(s2)는 문자열 s1과 s2를 비교하고 그 결과를 다음과 같이 정수(Integer)로 리턴합니다.

  • s1과 s2가 같을 때 0을 리턴
  • s1이 s2보다 클 때 양수 리턴
  • s1이 s2보다 작을 때 음수 리턴

1. string::compare()으로 문자열 비교

아래와 같이 문자열이 같으면 0, 작으면 음수, 크면 양수를 리턴합니다.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s1("Hello");
    string s2("Hello");
    string s3("Hell");
    string s4("Hella");

    if (s1.compare(s2) == 0)
        cout << "s1 is equal to s2" << endl;

    if (s1.compare(s3) > 0)
        cout << "s1 is bigger than s3" << endl;

    if (s1.compare(s4) > 0)
        cout << "s1 is bigger than s4" << endl;

    if (s4.compare(s1) < 0)
        cout << "s4 is smaller than s1" << endl;
}

Output:

s1 is equal to s2
s1 is bigger than s3
s1 is bigger than s4
s4 is smaller than s1

2. string::compare()으로 부분 문자열 비교 (1)

위의 예제에서는 s1과 s2 문자열을 전체 비교하였는데, s1의 특정 문자열만 s2와 비교할 수 있습니다.

아래와 같이 s1의 문자열 index와 비교할 길이(len)를 인자로 전달하면, s1의 index부터 길이만큼의 문자열을 s2와 비교합니다.

int string::compare (size_type idx, size_type len, const string& str)

아래 예제는 mmHello의 Index 2에서 5개에 해당하는 문자열(Hello)을 Hello와 비교하는 예제입니다.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s1("mmHello");
    string s2("Hello");

    if (s1.compare(2, 5, s2) == 0)
        cout << "s1 is equal to s2" << endl;
}

Output:

s1 is equal to s2

3. string::compare()으로 부분 문자열 비교 (2)

s1의 부분 문자열과 s2의 부분 문자열을 비교할 수도 있습니다. 아래와 같이 s2에 대한 index와 길이(len)를 인자로 전달하면 됩니다.

int string::compare (size_type idx, size_type len, const string& str, size_type str_idx, size_type str_len)

아래 예제는 mmHello의 Index 2에서 5개 길이, kkkkHello의 Index 4에서 5개 길이의 부분 문자열을 비교하는 예제입니다.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s1("mmHello");
    string s2("kkkkHello");

    if (s1.compare(2, 5, s2, 4, 5) == 0)
        cout << "s1 is equal to s2" << endl;
}

Output:

s1 is equal to s2
Loading script...
codechachaCopyright ©2019 codechacha