본문 바로가기
SWE/C++ OOP

[c++ STL] string 특정 문자열 찾기

by S나라라2 2019. 3. 8.
반응형

문장 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;
}


반응형