본문 바로가기
  • 공부, 여행 리뷰해요~~!!
공부/C++

5. C++ string 크기 비교 (compare, cmp)

by 하나리나 2021. 8. 19.
반응형

* 개인 공부를 위하여 간단하게 정리한 것입니다. 

* 틀린 부분 지적은 늘 환영입니다.

 

 

@ 숫자형태의 string을 조합하여 어떤 순서로 조합했을 때 큰 숫자를 반환할 수 있는지 비교할 때 유용한 방법입니다.

 

1. string "520"과 "42"를 생성하고, "52042"와 "42520" 중에서 어떤 수가 더 큰지 간단하게 확인해봅시다.

	string str1 = "520";
	string str2 = "42";

	string str12, str21;
	str12 = str1 + str2;
	str21 = str2 + str1;

	cout << str12 << endl << str21 << endl;

당연히 "52042"가 더 큰 것을 육안으로 확인할 수 있습니다.

 

2. 이번에는 위에서 생성한 str1과 str2가 ipnut이 되는 함수를 하나 생성합니다.

 

 2.1. str1+str2가 더 크면 true

 

 2.2. str2+str1이 더 크면 false를 반환하는 함수입니다.

 

bool cmp_trial(string s1, string s2) {
	// s1+s2가 더 크면 true 반환
	return stoi(s1 + s2) > stoi(s2 + s1) ? true : false;
}

 

2.3. 여기서 stoi는 string to int 즉, string을 int형으로 변환하는 함수입니다.

 

3. cmp_trial을 다음과 같이 실행합시다.

	bool chk;
	chk = cmp_trial(str1, str2);
	cout << chk << endl;
    

 

4. true (1)를 반환합니다.

 

5. 전체 코드

#include<string>
#include<iostream>

using namespace std;

bool cmp_trial(string s1, string s2) {
	// s1+s2가 더 크면 true 반환
	return stoi(s1 + s2) > stoi(s2 + s1) ? true : false;
}

int main() {
	string str1 = "520";
	string str2 = "42";

	string str12, str21;
	str12 = str1 + str2;
	str21 = str2 + str1;

	cout << str12 << endl << str21 << endl;

	bool chk;
	chk = cmp_trial(str1, str2);
	cout << chk << endl;


	return 0;
}

 

반응형