문장 str에서 특정 문자열 str1을 찾는 문제
여기서 사용된 std함수들 정리
#include < string >
*substr : 문자열의 일부를 return
str.substr(5) : str의 5번째부터 끝까지 return
str.substr(5,3) : str의 5번째부터 5+3까지 return / substr(pos, count)
*find : 문자열을 찾아서 첫번째 위치를 return
str.find(str1) : 문장 str에서 문자열 str1이 처음으로 나온 위치를 return
str.find("aa", 1, 2)
str : 검색할 문장,
"aa" : 찾을 문자열
1 : 검색할 문장 str에서 1부터 마지막인덱스까지 확인
2 : 최소 같아야하는 문자개수 -> aa 2개 다
**여기서 첫번째 인자"aa"는 const가 되어야되서 str1을 넣지 못하는 것 같다,,, 아마?
*string::npos
: until the end of the string
find 함수 사용할 때 사용됨.
ex ) str.find(ab)
-> str.find(ab) == string::npos : 문장 str에 ab가 없음
str.find(ab) != string::npos : 문장 str에 ab가 최소 한 번 들어가 있음
*size_t ssize_t ( defined in stddef.h )
: long, int, char 어떤 것도 될 수 있는 자료형
(입출력함수, string, size에서 많이 볼 수 있음)
size를 나타내기 위한 type으로 32bit운영체제에서는 32bit, 64bit운영체제에서는 64bit 이다.
size_t : unsigned int
ssize_t : signed int (성공 return 양수, 실패 return -1)
// #1213 String #include < iostream > #include < string > using namespace std; int main(void) { for(int tc=1; tc<=10; tc++){ int a; cin>>a; string str1,str; int answer =0; cin >> str1; // 찾을 문자열 cin >> str; // 검색할 문장 ssize_t found; while( (found=str.find(str1)) != string::npos ){ answer++; str = str.substr(found+1); } cout << '#' << tc << ' ' << answer << endl; } return 0; }