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

C++ strpbrk() 함수 사용법과 예제


strpbrk()는 C++의 문자열 함수로, 두 개의 문자열을 인수로 받아 첫 번째 문자열(str1)에서 두 번째 문자열(str2)에 포함된 문자가 처음 나타나는 위치를 찾습니다. 일치하는 문자를 찾으면 해당 문자에 대한 포인터를 반환하고, 찾지 못하면 NULL을 반환합니다. 단, 이 함수는 문자열 끝의 널(NULL) 종료 문자에는 적용되지 않습니다.

strpbrk() 함수의 구문은 다음과 같습니다.

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

위 구문에서 strpbrk()는 str2에 포함된 임의의 문자와 일치하는 str1 내 첫 번째 문자에 대한 포인터를 반환합니다.

다음 프로그램은 strpbrk() 함수의 동작 방식을 보여줍니다.

예제

#include <iostream>
#include <cstring>
using namespace std;
int main() {
   char str1[20] = "aeroplane";
   char str2[20] = "fun";
   char *c;
   c = strpbrk(str1, str2);
   if (c != 0)
   cout<<"First matching character in str1 is "<< *c <<" at position "<< c-str1+1;
   else
   printf("Character not found");
   return 0;
}

출력

First matching character in str1 is n at position 8

위 프로그램에서는 먼저 두 개의 문자열 str1과 str2를 정의합니다. strpbrk()가 반환한 포인터는 문자형 포인터 변수 c에 저장됩니다. c의 값이 0이 아니면(즉, 일치하는 문자가 존재하면) 해당 문자와 str1 내에서의 위치를 출력하고, 그렇지 않다면 str1에 일치하는 문자가 없다는 의미입니다. 이 과정은 다음 코드 조각에서 확인할 수 있습니다.

char str1[20] = "aeroplane";
char str2[20] = "fun";
char *c;
c = strpbrk(str1, str2);
if (c != 0)
cout<<"First matching character in str1 is "<<*c <<" at position "<< c-str1+1;
else
printf("Character not found");

핵심 포인트 정리

  • strpbrk()는 <cstring>(C 언어에서는 string.h) 헤더 파일에 선언되어 있습니다.
  • str2의 모든 문자를 대상으로 str1을 앞에서부터 순차적으로 검색하여 가장 먼저 발견된 문자의 포인터를 반환합니다.
  • 포인터 연산인 c - str1 + 1을 사용하면 일치한 문자의 위치를 1부터 시작하는 순번으로 계산할 수 있습니다. 위 예제에서 'n'은 여덟 번째 자리에 있습니다.
  • 일치하는 문자가 하나도 없으면 NULL 포인터가 반환되므로, 반환값을 반드시 확인한 후 사용해야 합니다.