C++ 문자열 검색 strstr 사용 방법

C++에서 문자열 안에 특정 문자열이 있는지 검색하는 방법을 알아보겠습니다.

문자열 안에서 검색을 하는 방법을 여러 가지가 있습니다.

이번에는 strstr 함수를 사용해 검색하는 방법을 알아보겠습니다.

strstr 함수 작성법을 보겠습니다.

strstr(대상 문자열, 검색 문자열)

첫 번째 파라미터로는 대상이 되는 문자열을 지정합니다.

두 번째 파라미터로는 검색하고 싶은 문자열을 지정합니다.

대상 문자열에 검색 문자열이 있으면 해당 포인터 위치를 반환합니다.

검색 문자열이 없으면 NULL값을 반환합니다.

샘플 소스를 보겠습니다.

#include <stdio.h>
#include <cstring>

int main()
{
    // 대상 문자열
    char str[] = "Hello World Sample Test World"; 
    
    // 검색 문자열
    char* rs = strstr(str, "World");
    
    printf("문자열 : %s\n", rs);
    printf("문자열 위치 : %p\n", rs);

    return 0;
}

결과

문자열 : World Sample Test World
문자열 위치 : 0x7fff25f08ae6

검색 결과를 출력한 문자열을 보면 World 이후의 모든 문자열을 출력합니다.

결과에서 알 수 있듯이 검색 문자열과 일치하는 문자열이 존재하면, 첫 번째 일치하는 문자열에서 처리가 종료됩니다.

검색 문자열을 전부 찾고 싶은 경우에는 반복문을 사용해 검색을 해야 합니다.

#include <stdio.h>
#include <cstring>

int main()
{
    // 대상 문자열
    char str[] = "Hello World Sample Test World"; 
    
    // 검색 문자열
    char* rs = strstr(str, "World");
    int count = 0;
    
    while (rs != NULL) 
    {
        printf("%s\n", rs); 
        rs = strstr(rs + 1, "World"); 
        count++;

    }
    
    printf("검색 결과 : %d개", count);
    
    return 0;
}

결과

World Sample Test World
World
검색 결과 : 2개

처음 strstr로 검색한 결과값을 while 문으로 반복시킵니다.

검색 문자열이 더 이상 존재하지 않으면 NULL을 반환하기 때문에 while문이 종료됩니다.

while문 처리는 검색 문자열이 존재하면 다음 검색 문자를 찾기 위해 포인터에 1을 더합니다.

검색 문자열을 전부 찾고 싶은 경우에는 이렇게 반복문을 사용해 찾을 수 있습니다.

댓글