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

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

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

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

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;
        }
    
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.