c++_ 문자열 찾기_ string.find()
https://codeforces.com/problemset/problem/96/A
영어 지문 연습겸 코드포스 쉬운문제를 풀다가 발견한 함수다.
c++에서 특정 문자열이 있는지 없는지 알아보는데 매우 유용한 함수다.
코드 및 사용법
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string dangerousSituation1 = "1111111";
string dangerousSituation2 = "0000000";
string situation;
cin >> situation;
//string::npos는 특정문자열이 안에 없을때 반환하는 값 (지멋대로의 수임)이고
//만약 성립할때는 그 특정문자열이 시작하는 index를 반환한다.
if (situation.find(dangerousSituation1) == string::npos && situation.find(dangerousSituation2) == string::npos)
cout << "NO" << endl;
else
cout << "YES" << endl;
return 0;
}
주의사항
그 특정문자열이 여러개 있어도 맨앞에 있는 문자열의 시작하는 index만 반환하므로 주의할것.

여러개의 반복적인 문자열을 찾으려면 반복문과 인자를 이용해야함. (밑에 예시)
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string dangerousSituation2 = "00";
size_t strSize = 2;
string situation;
cin >> situation;
size_t pos = situation.find(dangerousSituation2);
cout << pos << endl;
while (1)
{
pos = situation.find(dangerousSituation2, pos+ strSize);
if (pos == string::npos)
break;
cout << pos << endl;
}
return 0;
}