Programming/C++

string::compare의 개념과 활용

moxie2ks 2025. 2. 12. 18:01
728x90
반응형

개요

C++의 std::string 클래스는 문자열을 다루기 위한 다양한 메서드를 제공하며, 그중 string::compare() 함수는 두 문자열을 비교하는 데 사용된다. 이 함수는 문자열 간의 사전적 순서를 판단할 수 있게 해 주며, 문자열 비교 작업에서 매우 유용하다.

설명

string::compare() 함수는 다음과 같은 형식을 가진다:

이 함수는 대소문자를 구분하며, 비교할 문자열의 길이를 넘어서는 경우에는 std::string::npos를 사용하여 기본값을 설정할 수 있다.

int compare(const string& str) const noexcept;
int compare(size_t pos1, size_t len1, const string& str) const;
int compare(size_t pos1, size_t len1, const string& str, size_t pos2, size_t len2 = npos) const;
int compare(const char* s) const noexcept;
int compare(size_t pos1, size_t len1, const char* s, size_t len2) const;

매개변수

  • str: 비교할 문자열.
  • pos1, len1: 비교할 문자열의 시작 위치와 길이.
  • pos2, len2: 두 번째 문자열의 시작 위치와 길이.
  • s: C 스타일 문자열.

매개변수

  • 0: 두 문자열이 동일한 경우.
  • 양수: 첫 번째 문자열이 두 번째 문자열보다 사전적으로 큰 경우.
  • 음수: 첫 번째 문자열이 두 번째 문자열보다 사전적으로 작은 경우.

예제 코드 #1 - 기본 문자열 비교

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello, World!";
    std::string str2 = "Hello, C++!";

    int result = str1.compare(str2);

    if (result == 0) {
        std::cout << "str1과 str2는 동일합니다." << std::endl;
    } else {
        std::cout << "str1과 str2는 다릅니다." << std::endl;
    }

    return 0;
}

실행결과

str1과 str2는 다릅니다.

예제 코드 #2 - 부분 문자열 비교

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello, World!";
    std::string str2 = "World";

    // str1의 7번째 위치에서 5글자와 str2 비교
    int result = str1.compare(7, 5, str2);

    if (result == 0) {
        std::cout << "str1의 일부와 str2는 동일합니다." << std::endl;
    } else {
        std::cout << "str1의 일부와 str2는 다릅니다." << std::endl;
    }

    return 0;
}

실행결과

str1의 일부와 str2는 동일합니다.

예제 코드 #3 - C 스타일 문자열 비교

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello, World!";

    // C 스타일 문자열과 비교
    int result = str1.compare("Hello, World!");

    if (result == 0) {
        std::cout << "str1과 C 스타일 문자열은 동일합니다." << std::endl;
    } else {
        std::cout << "str1과 C 스타일 문자열은 다릅니다." << std::endl;
    }

    return 0;
}

실행결과

str1과 C 스타일 문자열은 동일합니다.

예제 코드 #4 - 부분 문자열의 특정 위치 비교

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Programming in C++";
    std::string str2 = "C++";

    // str1의 15번째 위치에서 3글자와 str2 비교
    int result = str1.compare(15, 3, str2);

    if (result == 0) {
        std::cout << "str1의 일부와 str2는 동일합니다." << std::endl;
    } else {
        std::cout << "str1의 일부와 str2는 다릅니다." << std::endl;
    }

    return 0;
}

실행결과

str1의 일부와 str2는 동일합니다.

예제 코드 #5 - 두 문자열의 특정 부분 비교

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello, World!";
    std::string str2 = "Hello, Universe!";

    // str1의 0번째 위치에서 5글자와 str2의 0번째 위치에서 5글자 비교
    int result = str1.compare(0, 5, str2, 0, 5);

    if (result == 0) {
        std::cout << "str1과 str2의 첫 5글자는 동일합니다." << std::endl;
    } else {
        std::cout << "str1과 str2의 첫 5글자는 다릅니다." << std::endl;
    }

    return 0;
}

실행결과

str1과 str2의 첫 5글자는 동일합니다.

결론

string::compare() 함수는 C++에서 문자열 간의 비교를 수행하는 간단하고 효율적인 방법을 제공한다. 이 함수는 문자열의 사전적 순서를 판단하거나, 두 문자열이 동일한지를 확인하는 데 유용하다. 문자열 비교가 필요한 경우 string::compare()를 활용하면 코드의 가독성과 효율성을 높일 수 있다.

참고문헌

728x90
반응형