Programming/C++
C++ string find를 이용한 찾은 문자열 위치 저장
LordLoop
2020. 7. 22. 17:52
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;
}