Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ strstr() 함수 완벽 가이드: 문자열에서 부분 문자열 찾는 방법

C++ strstr() 함수란?

strstr() 함수는 C++의 <string.h> 헤더 파일에 미리 정의되어 있는 표준 라이브러리 함수입니다. 이 함수는 하나의 문자열 안에서 특정 부분 문자열(substring)이 처음 나타나는 위치를 찾는 데 사용됩니다. 문자열 검색은 널 종료 문자인 '\0'을 만나면 중단되며, '\0' 자체는 검색 대상에 포함되지 않습니다.

strstr() 함수의 문법

char *strstr( const char *str1, const char *str2)

위 문법에서 strstr()은 str1 문자열 내에서 str2 문자열이 처음 등장하는 위치를 찾아 해당 위치를 가리키는 포인터를 반환합니다. 만약 str2가 str1에 존재하지 않으면 NULL을 반환합니다.

strstr() 함수 예제

다음 프로그램은 strstr() 함수를 활용한 전체 예제 코드입니다.

#include <iostream>
#include <string.h>

using namespace std;
int main() {
   char str1[] = "Apples are red";
   char str2[] = "are";
   char *ptr;
   ptr = strstr(str1, str2);

   if(ptr)
   cout<<"Occurrence of \""<< str2 <<"\" in \""<< str1 <<"\" is at position "<<ptr - str1 + 1;

   else
   cout<<"There is no occurrence of \""<< str2 <<"\" in "<<str1;
   return 0;
}

실행 결과

위 프로그램의 실행 결과는 다음과 같습니다.

Occurrence of "are" in "Apples are red" is at position 8

코드 상세 설명

먼저 str1과 str2라는 두 개의 문자열 배열을 각각 "Apples are red"와 "are" 값으로 초기화하고, 검색 결과를 저장할 포인터 ptr을 선언합니다.

char str1[] = "Apples are red";
char str2[] = "are";
char *ptr;

이후 strstr() 함수를 호출하여, 포인터 ptr이 str1 문자열 내에서 "are"가 처음 나타나는 위치를 가리키도록 합니다.

ptr = strstr(str1, str2);

포인터 ptr에 유효한 값이 저장되어 있다면, ptr과 str1의 메모리 주소 차이를 이용해 str2가 str1 내에서 위치한 인덱스를 계산하여 화면에 출력합니다. 반대로 ptr이 NULL이라면 str1에 str2가 존재하지 않는다는 메시지를 출력합니다.

if(ptr)
cout<<"Occurrence of \""<< str2 <<"\" in \""<< str1 <<"\" is at position "<<ptr - str1 + 1;

else
cout<<"There is no occurrence of \""<< str2 <<"\" in "<<str1;

여기서 ptr - str1 + 1은 부분 문자열의 시작 위치를 1부터 시작하는 순번으로 환산한 값입니다. "Apples are red"에서 "are"는 여덟 번째 문자부터 시작하므로 결과값이 8로 출력됩니다. 이처럼 strstr()은 문자열 검색, 로그 분석, 입력값 확인 등 다양한 상황에서 유용하게 활용할 수 있습니다.