본문 바로가기

컴퓨터

strcmp(), compare()

함수이름

함수이름은 strcmp() compare() 이다. strcmp()는 아무래도 string compare 의 약자일 것이다. compare()는 말 그대로 비교한다는 뜻이다.

기능

두 함수는 문자열을 비교하는 기능을 한다. 문자열을 비교는 char 배열 형식의 문자열을 비교하는 경우와 string 형식의 문자열을 비교하는 두가지 경우가 있다. strcmp() 가 앞의 경우에 사용되고 compare()가 뒤의 경우에 사용된다.

헤더

iostream 헤더에 포함되어있는 것 같다. 딱히 다른 헤더를 필요로 하진 않는다. 그렇다고 iostream 헤더를 빼면 오류가 난다.

사용 예제 : strcmp()

#include <iostream> //cout, endl, strcmp() 을 위한 헤더

using std::cout;
using std::endl;

int main(void) {
	char str1[] = "Hello, World!";
	char str2[] = "Hi, World!";
	char str3[] = "Hello, World!";

	cout << "str1과 str2 비교: "<< strcmp(str1, str2) << endl;
	cout << "str1과 str3 비교: " << strcmp(str1, str3) << endl;
	
	return 0;
}

11번째 줄의 실행결과는 -1이다. str1이 str2보다 아스키코드 순서로 볼 때 앞에 있기 빼문이다. 만약에 순서가 뒤에 있었다면 1을 반환했을 것이다.

12번째 줄의 실행결과는 0이다. str1과 str3의 문자열이 일치하기 때문이다. 결국, 문자열이 서로 같은지, 다른지를 판단하려면 반환값이 0인지 아닌지를 분별하면 된다.

 

사용 예제 : compare()

#include <iostream> //cout, endl, string compare() 을 위한 헤더

using std::cout;
using std::endl;
using std::string;

int main(void) {
	string str1 = "Hello, World!";
	string str2 = "Hi, World!";
	string str3 = "Hello, World!";

	cout << "str1과 str2 비교: " << str1.compare(str2) << endl;
	cout << "str1과 str3 비교: " << str1.compare(str3) << endl;

	return 0;
}

12번째 줄의 실행결과는 -1이다. str1이 str2보다 아스키코드 순서로 볼 때 앞에 있기 빼문이다. 만약에 순서가 뒤에 있었다면 1을 반환했을 것이다.

13번째 줄의 실행결과는 0이다. str1과 str3의 문자열이 일치하기 때문이다. 결국, 문자열이 서로 같은지, 다른지를 판단하려면 반환값이 0인지 아닌지를 분별하면 된다.

5번째 줄에는 string 자료형을 사용하기 위해 using std::string 을 선언하고 있다. 선언하지 않으면 string 자료형을 사용할 수 없다.

'컴퓨터' 카테고리의 다른 글

SetCursorPos()  (0) 2019.04.24
GetCursorPos()  (0) 2019.04.24
ofstream  (0) 2019.04.23
4-6. friend 선언  (0) 2019.04.11
4-4 클래스와 배열  (0) 2019.04.10