C++ 문자열 위치 검색 find, rfind 사용 방법

C++ 문자열 위치를 취득하는 방법을 알아보겠습니다.

문자열 앞에서부터 검색하는 find와 뒤에서부터 검색하는 rfind가 있습니다.

 

find

문자열 위치를 검색하는 find 함수에 대해 알아보겠습니다.

문자열.find(검색 문자열)

  • 문자열 앞에서부터 검색을 시작해 검색 문자열이 시작되는 위치를 반환.
  • 검색 문자열을 찾지 못한 경우 string::npos(4294967295) 반환.
  • 문자열 인덱스는 0부터 시작.

 

find 함수를 사용해 문자열 위치를 찾는 샘플을 보겠습니다.

#include <iostream>
using namespace std;


int main() {
	string str1 = "abcde";

	cout << str1.find("a") << endl; // 0
	cout << str1.find("b") << endl; // 1
	cout << str1.find("c") << endl; // 2
	cout << str1.find("abc") << endl; // 0
	cout << str1.find("z") << endl; // 4294967295

	if (str1.find("z") == string::npos) {
		cout << "검색 문자열이 없습니다." << endl; // 문자열을 찾지 못했을 경우.
	}

	return 0;
}

 

결과

0
1
2
0
18446744073709551615
검색 문자열이 없습니다.

 

변수 str1에 설정한 문자열에서 find 함수를 사용해 검색 문자열 위치를 반환해 출력했습니다.

앞에서부터 검색 문자열이 있는 위치를 반환합니다.

문자열을 찾지 못한 경우에는 4294967295를 반환했습니다.

string::npos로 비교해 검색 문자열이 없습니다. 라는 문자열을 표시하도록 했습니다.

 

rfind

문자열 뒤에서부터 검색 문자열을 찾는 rfind 함수 사용방법을 보겠습니다.

문자열.rfind(검색 문자열)

  • 문자열 뒤에서부터 검색 문자열 위치를 반환.
  • 검색 문자열을 찾지 못한 경우 string::npos(4294967295) 반환.

 

rfind 함수를 사용해 뒤에서부터 문자열 위치를 검색하는 샘플을 보겠습니다.

#include <iostream>
using namespace std;


int main() {
	string str1 = "abcabc";

	cout << str1.rfind("a") << endl; // 3
	cout << str1.rfind("b") << endl; // 4
	cout << str1.rfind("c") << endl; // 5
	cout << str1.rfind("abc") << endl; // 3
	cout << str1.rfind("z") << endl; // 4294967295

	if (str1.rfind("z") == string::npos) {
		cout << "검색 문자열이 없습니다." << endl; // 문자열을 찾지 못했을 경우.
	}

	return 0;
}

결과

3
4
5
3
18446744073709551615
검색 문자열이 없습니다.

 

문자열 뒤에서부터 검색 문자열 위치를 검색하고 있습니다.

검색 문자열이 문자열에 존재하는 경우에는 문자열이 시작되는 위치를 반환합니다.

해당 문자열이 없으면 4294967295를 반환합니다.

댓글