공부/C++
5. C++ string 크기 비교 (compare, cmp)
하나리나
2021. 8. 19. 20:42
반응형
* 개인 공부를 위하여 간단하게 정리한 것입니다.
* 틀린 부분 지적은 늘 환영입니다.
@ 숫자형태의 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;
}
반응형