c++ string 문자와 string 배열 비교하기 ㅠㅠ
조회수 11394회
제가 string 문자와 string 배열을 비교하고 있는데요
#include <iostream>
#include <string>
int main(){
string subway[] = {"불광", "합정", "마포구청", "망원"};
string a = "망원";
int count = 0;
for(int i=0; i<4; i++){
if(a.compare(subway[i])==1)
count++;
}
}
이렇게 해봤는데 count값이 3이 나오지 않네요 ㅠㅠ
어떻게 고쳐야 할까요 ,,
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
std::string::compare() 의 반환값은 0 또는 0보다큰 또는 0보다작은 값 입니다.
a.compare(b) 에서
- 반환값이 0 일 경우
a
와b
가 동일합니다. - 반환값이 0 보다 큰 경우
a
가b
보다 사전 순서상 뒤에 있습니다. - 반환값이 0 보다 작은 경우
a
가b
보다 사전 순서상 앞에 있습니다.
그렇기에
a.compare(subway[i])==1
는 의도대로 동작하지 않을 수 있습니다.원하시는 결과가 3 인 것을 보면 동일한 문자열이나 사전상 뒤에 있는 문자열일 때를 조건으로 하는 것으로 보입니다.
따라서 아래와 같이
a.compare(subway[i]) <= 0
으로 변경하면,망원
보다 사전상 순서가 같거나 뒤에 있는 경우에만count
가 증가합니다.#include <iostream> #include <string> using std::string; int main(){ string subway[] = {"불광", "합정", "마포구청", "망원"}; string a = "망원"; int count = 0; for(int i=0; i<4; i++){ if(a.compare(subway[i]) <= 0) count++; } std::cout << count; return 0; }
- 반환값이 0 일 경우
댓글 입력