반응형
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를 반환합니다.
- 여러 오버로드를 제공하여 다양한 검색 작업을 지원합니다.
이 함수는 문자열 검색 작업을 수행할 때 매우 유용하며, 간단한 예제를 통해 사용법을 익힐 수 있습니다.
반응형
'C++ 공부' 카테고리의 다른 글
[C++]아스키코드 란?(프로그래머스−특정한 문자를 대문자로 바꾸기) (0) | 2024.08.07 |
---|---|
[C++]while 조건문에 '>>' 가 있는 경우는? (0) | 2024.07.28 |
[C++]String 의 replace(), regex_replace() 함수 정의, 비교 (0) | 2024.07.27 |
[C++]Sort 함수란? 정렬, 오름차순, 내림차순 (0) | 2024.07.27 |
[C++]Vector 와 Array 비교 (0) | 2024.07.27 |
댓글