본문 바로가기
C++ 공부

[C++]String 의 find 함수 정의, string::npos 란?(프로그래머스-문자열 바꿔서 찾기)

by honey달콤 2024. 7. 28.
반응형

C++에서 std::string 클래스의 find 함수는 특정 부분 문자열이나 문자를 찾는 데 사용됩니다. 이 함수는 찾고자 하는 문자열이나 문자가 처음으로 나타나는 위치를 반환합니다. find 함수는 다양한 오버로드를 제공하며, 이들 각각의 사용 방법을 이해하는 것이 중요합니다.

 

정의

기본 형태

size_t find(const std::string& str, size_t pos = 0) const noexcept;
  • str: 찾고자 하는 부분 문자열.
  • pos: 검색을 시작할 위치. 기본값은 0.  따라서, find (문자열) 만 해도 된다. 

문자로 검색하는 형태

size_t find(char ch, size_t pos = 0) const noexcept;

 

  • ch: 찾고자 하는 문자.
  • pos: 검색을 시작할 위치. 기본값은 0.  따라서, find (문자열) 만 해도 된다. 

반환 값

find 함수는 찾고자 하는 문자열이나 문자가 처음으로 나타나는 위치를 반환합니다. 만약 찾을 수 없는 경우 std::string::npos를 반환합니다.

 

string::npos란?

size_type으로 정의된 특수값이다.

string::npos란 -1 값을 가지는 상수로 find() 함수 수행 시에 찾는 문자열이 없을 때 반환된다.

예제

부분 문자열 찾기

#include <iostream>
#include <string>

int main() {
    std::string s = "Hello, world!";
    size_t pos = s.find("world");
    
    if (pos != std::string::npos) {
        std::cout << "'world' found at position: " << pos << std::endl;
    } else {
        std::cout << "'world' not found" << std::endl;
    }
    
    return 0;
}

 

문자 찾기

#include <iostream>
#include <string>

int main() {
    std::string s = "Hello, world!";
    size_t pos = s.find('o');
    
    if (pos != std::string::npos) {
        std::cout << "'o' found at position: " << pos << std::endl;
    } else {
        std::cout << "'o' not found" << std::endl;
    }
    
    return 0;
}

프로그래머스 - 문자열 바꿔서 찾기

#include <string>
#include <vector>

using namespace std;

int solution(string myString, string pat) {
    int answer = 0;
    string conv = "";

    for ( int i = 0; i < myString.size(); i++ )
    {
        if ( myString[i] == 'A')
            conv += 'B';
        else if ( myString[i] == 'B')
            conv += 'A';
    }

    if ( conv.find(pat) != string::npos )
        return 1;
    else
        return 0;
}

특정 위치부터 검색

#include <iostream>
#include <string>

int main() {
    std::string s = "Hello, world!";
    size_t pos = s.find('o', 5); // 5번째 인덱스부터 검색
    
    if (pos != std::string::npos) {
        std::cout << "'o' found at position: " << pos << std::endl;
    } else {
        std::cout << "'o' not found" << std::endl;
    }
    
    return 0;
}

요약

  • find 함수는 std::string 클래스의 멤버 함수로, 문자열이나 문자를 검색할 때 사용됩니다.
  • 반환 값은 찾고자 하는 부분 문자열이나 문자가 처음으로 나타나는 위치이며, 찾지 못한 경우 std::string::npos를 반환합니다.
  • 여러 오버로드를 제공하여 다양한 검색 작업을 지원합니다.

이 함수는 문자열 검색 작업을 수행할 때 매우 유용하며, 간단한 예제를 통해 사용법을 익힐 수 있습니다.

반응형

댓글