자바에 익숙해진 나머지 가끔 equals 함수를 쓸 때가 있다..
그래서 c++ 할때는 문자열을 어떻게 비교해야할지 고민이 있었는데,,
c++은 ==을 써도 문자열 비교가 된다고 한다!
그래서 너무 단순하게 끝나버린다..
그래서 compare와 strcmp 함수도 정리해보려 합니다..ㅎ => 속도 비교도 있음
-
'=='은 뭐 c++에서는 비교가 가능하다고 하니 패스
-
compare 함수
-> string 함수다.
밑에 코드에서 보면 알겠지만 a.compare(b) 의 형태로 사용하고, 두 문자열이 같으면 0을 리턴한다.
string a="aaa"
string b="bbb"
- a.compare(b) < 0 => a 의 문자열이 b 보다 사전적의미에서 앞에 있다.
- a.compare(b)==0 => 두 문자열이 같다
- a. compare(b) > 0 => b의 문자열이 a보다 사전적 의미에서 앞에 있다.
코드는 strcmp랑 한번에 보기
-
strcmp 함수
#include <string.h>
int strcmp(const char *string1, const char *string2);
-> string 에 대해서는 compare 쓰고 char*에 대해서는 strcmp를 사용하자
strcmp(a,b) ==0 의 형태로 사용하면 되고, compare 와 비슷하다.
바로 코드로 ㄱㄱ
#include <iostream>
#include <string>
#include <string.h> //strcmp
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
string text1="aaa";
string text2="bbb";
string text3="aaa";
const char *str1="aaa";
const char *str2="bbb";
//compare 함수 사용하기
if(text1.compare(text2)>0)
cout<<"aaa > bbb(compare)"<<endl;
else if(text1.compare(text2)<0)
cout<<"aaa<bbb(compare)"<<endl;
if(text1.compare(text3)==0)
cout<<"aaa=aaa(compare)"<<endl;
//strcmp 사용하기
if(strcmp(str1,str2)>0)
cout<<"aaa>bbb(strcmp)"<<endl;
else if(strcmp(str1,str2)<0)
cout<<"aaa<bbb(strcmp)"<<endl;
if(strcmp(str1,str2)==0)
cout<<"str1=str2"<<endl;
//==사용하기
if(text1==text3)
cout<<"== 으로 해도 됩니다."<<endl;
return 0;
}
- string이든 char*이든 상관없을 때는 strcmp를 사용하는게 좋다
=> 디버그 빌드할때 속도가 훨씬 빠르다...!
'까먹어서 다시하는 c++' 카테고리의 다른 글
c++ atoi, stoi 문자열을 int 로 - string to int (0) | 2020.04.24 |
---|---|
코테용- c++ split 함수 (string 나누기/string 잘라서 배열에 넣기) (3) | 2020.04.16 |
c++ STL map (0) | 2019.06.10 |
까먹어서 다시하는 c++ 1일차 (5) | 2019.05.08 |