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
반응형