[C++ STL] string.find() - 문자열에서 원하는 문자열을 탐색한다.

반응형
반응형

*개인적인 공부 기록용으로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.


size_type find(const basic_string& str, size_type pos = 0) const;      // (1)
size_type find(const CharT* s, size_type pos, size_type count) const;  // (2)
size_type find(const CharT* s, size_type pos = 0) const;               // (3)
size_type find(CharT ch, size_type pos = 0) const;                     // (4)
template <class T>
size_type find(const T& t, size_type pos = 0) const;  // (5)

string의 find() 멤버함수를 이용하면, 특정 문자열에서 원하는 문자열을 간편하게 찾을 수 있다.

find() 함수는 총 5가지 형태로 오버로딩 되어 있는데, 자주 사용되는 형태만 몇가지 예시로 알아 보도록 하자.

 

우선, find()는 string 라이브러리에 속한 멤버함수 이기에, string 라이브러리를 선언 해 주어야 한다.

다음으로 탐색하고자 하는 문자열을 () 괄호 안에 큰따옴표와 함께 넣어주면 된다.

#include <string>
문자열이름.find("탐색할 문자열")

return 값은 문자열 탐색에 성공했을 경우 찾는 문자의 첫 번째 인덱스 주소를 반환해 준다.

문자열 탐색에 성공하지 못했을 경우에는 string::npos를 리턴해 주는데, 이는 가비지값 (무작위 long long 값) 이다.

 

다음 코드는 "Hello World!" 문자열에서 "Hello" 문자열을 탐색하는 예제이다. Hello 문자열의 첫 번째 인덱스는 0 이기에 index 변수에는 0값이 담기게 된다.

#include <iostream>
#include <string>
using namespace std;

int main() {
  string str = "Hello World!";
  int index = str.find("Hello");
  cout << index << endl;
  return 0;
}
[출력] 0

 

단일 문자를 탐색하고 싶다면, str.find('문자') 형태로 선언하면 된다. 이때 탐색하고자 하는 문자가 여러개면 가장 첫 번째 인덱스를 반환한다. 

예를들어 다음 코드는 "Hello World" 문자열에서 문자 'o'를 탐색하는 코드인데, o가 4번째 인덱스와 7번째 인덱스에 중복해서 존재하기에 앞에 있는 o의 위치인 4를 반환한다.

#include <iostream>
#include <string>
using namespace std;

int main() {
  string str = "Hello World!";
  int index = str.find('o');
  cout << index << endl;
  return 0;
}
[출력] 4

 

혹은 find 멤버함수의 2번째 인자에 값을 대입해 원하는 위치부터 탐색하도록 지정할 수 도 있다. 

str.find('o',5); //5번째 인덱스 부터 문자 o를 탐색한다.

다음 코드를 실행시켜 보면 5번째 인덱스 즉, 공백부터 탐색을 진행하기에 뒤에 존재하는 o의 인덱스값인 7이 출력된다.

#include <iostream>
#include <string>
using namespace std;

int main() {
  string str = "Hello World!";
  int index = str.find("o",5);
  cout << index << endl;
  return 0;
}
[출력] 7
반응형

댓글

Designed by JB FACTORY