거의 알고리즘 일기장

c++_ 문자열 찾기_ string.find() 본문

c++ 문법

c++_ 문자열 찾기_ string.find()

건우권 2020. 5. 2. 14:12

https://codeforces.com/problemset/problem/96/A

 

Problem - 96A - Codeforces

 

codeforces.com

영어 지문 연습겸 코드포스 쉬운문제를 풀다가 발견한 함수다. 

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;
}
반응형
Comments