[C++ STL] string.find() - 문자열에서 원하는 문자열을 탐색한다.
- Archive2/C&C++
- 2021. 12. 25.
*개인적인 공부 기록용으로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.
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
'Archive2 > C&C++' 카테고리의 다른 글
[C++] 상수 _ 리터럴 상수 (literal Constants ) & 심볼릭 상수 (Symbolic Constants) (0) | 2021.12.28 |
---|---|
[C++ STL] string.replace() - 문자열 치환 함수 (0) | 2021.12.26 |
[C++] #7 참조자와 함수 - 참조자(&)를 반환하는 함수 (0) | 2021.08.21 |
[C++] #6 참조자와 함수 - Const 참조자에 대하여 (0) | 2021.08.21 |
[C++] #5 참조자와 함수 - 참조자가 필요한 이유 Call-By-Value & Call-By-Reference (0) | 2021.08.21 |