본문 바로가기

Programming/C++

C++ string find를 이용한 찾은 문자열 위치 저장

C++ string 객체가 사용할 수 있는 멤버함수 find의 기본형

  • size_t find (const string& str, size_t pos = 0);
  • size_t find (const char* s, size_t pos = 0);

즉 find의 return 값은 size_t이다.

size_t타입은 C99표준에 정의되어 있는데, 객체나 값이 포함할 수 있는 최대의 크기를 표현하는 타입이다.

size_t타입은 unsigned형이다.

 

따라서 int형이나 unsigned int형으로 타입캐스팅으로 사용하는 방법도 가능하다.

(이를 모르더라도 컴파일러가 알아서 캐스팅해준다)

 

문자열에서 원하는 문자열을 찾으면, 해당 문자열의 시작 위치를 저장하고, 출력해주는 예제 코드이다.

 

 

#include <iostream>
#include <string>
#include <vector>
#include <iterator>

int main() {

	std::string str = "()(()((()()())(())()))(())";
	std::vector<size_t> vc;
	std::size_t pos = 0;
	std::size_t num = 0;

	while ( (num = str.find("()", pos)) != std::string::npos ) {
		vc.push_back(num);
		pos = num + 2;
	}

	std::copy(vc.begin(), vc.end(), std::ostream_iterator<size_t>(std::cout, " "));

	return 0;
}