문자열에서 특정 문자열이 있는지 찾는 방법


string 타입의 변수가 있을 때 그 안에 특정 문자열이 있는지 알아내려면 어떻게 하나요?

예를 들어 "Hello, It's me" 에서 "me"를 찾으면 True, "????"를 찾으면 False같이요.

기왕이면 인덱스도 찾아줬으면 좋겠어요

  • 2016년 01월 21일에 작성됨

조회수 300


1 답변


좋아요
0
싫어요
채택취소하기

std::string::find를 써야 합니다.

원형:

  1. size_t find (const string& str, size_t pos = 0) const;
  2. size_t find (const char* s, size_t pos = 0) const;
  3. size_t find (const char* s, size_t pos, size_t n) const;
  4. size_t find (char c, size_t pos = 0) const;

인자에 대한 설명:

  • str : 찾고자 하는 문자열
  • pos : str을 pos위치부터 찾기 시작합니다. ex) pos=3이면 인덱스 3부터 찾아나감
  • s : 캐릭터형의 배열을 가리키는 포인터
  • n : 연속으로 일치해야 하는 최소 길이
  • c : 찾고자 하는 캐릭터(배열이 아니라 문자 하나)

return값:

  • 첫 번째로 일치하는 문자의 위치를 return 해 줍니다.
  • 일치하는 위치를 찾지 못한 경우 string::npos를 return합니다.

예:

int main(){
    string s1 = "hello! C wor";
    string s2 = "world";

    ssize_t pos;
    if ( (pos = s1.find(s2, 0, 3)) != std::string::npos) {
        std::cout << "found!" << '\n';
        cout << pos << endl;
    }

}
  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close