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를 반환합니다.
댓글