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

C++ STL의 strchr() 함수 완벽 가이드: 개념, 문법부터 실전 예제까지

이 글에서는 C++ STL에서 제공하는 strchr() 함수의 동작 원리, 문법, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.

strchr() 함수란 무엇인가?

strchr()는 C++ 표준 라이브러리(STL)에 내장된 함수로, <cstring> 헤더 파일에 정의되어 있습니다. 이 함수는 문자열 내에서 특정 문자가 처음으로 등장하는 위치를 찾는 데 사용되며, 해당 위치를 가리키는 포인터를 반환합니다.

만약 찾고자 하는 문자가 문자열에 존재하지 않는다면, 함수는 널 포인터(NULL)를 반환합니다.

문법(Syntax)

char* strchr( char* str, char charac );

매개변수(Parameters)

strchr() 함수는 다음과 같은 매개변수를 받습니다.

  • str − 검색 대상이 되는 문자열입니다. 이 문자열 안에서 문자를 찾게 됩니다.

  • charac − 문자열 str에서 검색하고자 하는 문자입니다.

반환 값(Return Value)

이 함수는 문자가 문자열 내에서 처음 나타난 위치를 가리키는 포인터를 반환합니다. 문자를 찾지 못한 경우에는 널 포인터(NULL)를 반환합니다.

입력 예시 −

char str[] = "Tutorials Point";
char ch = 'u';

출력 결과 − u는 문자열에 존재합니다.

예제 1: 기본적인 문자 검색

다음 예제는 strchr() 함수를 사용하여 특정 문자가 문자열에 포함되어 있는지 확인하는 방법을 보여줍니다.

#include <iostream>
#include <cstring>
using namespace std;
int main(){
   char str[] = "Tutorials Point";
   char ch_1 = 'b', ch_2 = 'T';
   if (strchr(str, ch_1) != NULL)
      cout << ch_1 << " " << "is present in string" << endl;
   else
      cout << ch_1 << " " << "is not present in string" << endl;
   if (strchr(str, ch_2) != NULL)
      cout << ch_2 << " " << "is present in string" << endl;
   else
      cout << ch_2 << " " << "is not present in string" << endl;
   return 0;
}

실행 결과

b is not present in string
T is present in string

위 코드에서는 'b'라는 문자는 "Tutorials Point" 문자열에 없으므로 널 포인터가 반환되어 'not present' 메시지가 출력되고, 'T'는 문자열 맨 앞에 존재하므로 'present' 메시지가 출력됩니다.

예제 2: 조건문과 함께 활용하기

다음 예제는 strchr()의 반환 값을 조건으로 활용하여, 문자가 존재할 때만 문자열 연결(concatenation) 작업을 수행하는 응용 사례를 보여줍니다.

#include <iostream>
#include <cstring>
using namespace std;
int main(){
   char str[] = "Tutorials Point";
   char str_2[] = " is a learning portal";
   char ch_1 = 'b', ch_2 = 'T';
   if (strchr(str, ch_1) != NULL){
      cout << ch_1 << " " << "is present in string" << endl;
   }
   else{
      cout << ch_1 << " " << "is not present in string" << endl;
   }
   if (strchr(str, ch_2) != NULL){
      cout << ch_2 << " " << "is present in string" << endl;
      strcat(str, str_2);
      cout<<"String after concatenation is : "<<str;
   }
   else{
      cout << ch_2 <<" " << "is not present in string" << endl;
   }
   return 0;
}

실행 결과

b is not present in string
T is present in string
String after concatenation is : Tutorials Point is a learning portal

위 예제에서 'T'가 문자열에 존재한다는 것이 확인되면, strcat() 함수를 통해 두 번째 문자열이 첫 번째 문자열 뒤에 연결됩니다. 이처럼 strchr()는 단순히 문자 존재 여부를 확인하는 것을 넘어, 조건 분기 로직과 결합하여 다양하게 활용할 수 있습니다.

정리

strchr() 함수는 C++에서 문자열 내 특정 문자의 첫 번째 위치를 빠르게 찾을 수 있는 유용한 도구입니다. 반환되는 포인터를 활용하면 해당 위치 이후의 부분 문자열에 접근할 수도 있으며, 널 포인터 여부를 확인함으로써 문자의 존재 여부 판별에도 손쉽게 사용할 수 있습니다.