본문 바로가기

C++

[C++] 문자열 찾기: string.find();

반응형

size_t find(const string& str, size_T pos = 0) const;

str : 찾고자 하는 문자(열)

pos: 찾기 시작하는 주솟값

string.find 함수는 <string> 헤더 파일에 정의되어 있으며,

찾고자 하는 문자(열) str을 찾아준다.

그리고 str을 찾으면 해당 문자(열)이 위치한 주솟값을 반환하며, 찾지 못하면 string::npos를 반환한다.


예1. 찾는 문자(열)가 있으면 "Found"를 출력하고, 없으면 "Not found"를 출력한다.

 

#include <iostream>
#include <string>

int main(void) {

	std::string word = "sweet new, sweet new";
	std::string str;

	std::cout << "found word: ";
	std::cin >> str;

	int pos = 0;
	if (word.find(str) != std::string::npos) {
		std::cout << "Found!" << '\n';
	}
	else {
		std::cout << "Not found" << '\n';
	}

	return 0;
}

 


2. 찾는 문자(열)이 몇 개인지 출력한다.

 

#include <iostream>
#include <string>

int main(void) {

	std::string word = "sweet new, sweet new";
	std::string str;

	std::cout << "found word: ";
	std::cin >> str;

	int pos = 0;
	int i = 0;
	while (word.find(str, pos) != std::string::npos) {
		std::cout << "Found! " << ++i << '\n';
		pos += word.find(str, pos) + str.length();	// 찾은 후에 다음 탐색 시작 위치를 구하기 위해 찾은 '문자(열)의 위치 + 문자(열) 길이'를 구한다.
	}

	return 0;
}

 

반응형