C++에서 strchr() 함수는 미리 정의된(predefined) 함수로, 문자열 처리를 위해 사용됩니다. 이 함수는 주어진 문자열 안에서 특정 문자가 처음으로 나타나는 위치를 찾아 그 위치를 가리키는 포인터를 반환합니다.
strchr() 함수의 구문
char *strchr( const char *str, int c)
위 구문에서 str은 문자 c를 포함하고 있는 문자열입니다. strchr() 함수는 이 문자열에서 문자 c가 처음 등장하는 위치를 검색합니다. 참고로, 지정한 문자가 문자열에 존재하지 않으면 NULL 포인터가 반환됩니다.
strchr() 함수의 동작을 보여주는 프로그램은 다음과 같습니다.
예제 1: 문자의 첫 번째 위치 찾기
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = "strings";
char * c = strchr(str,'s');
cout << "First occurrence of character "<< *c <<" in the string is at position "<< c - str + 1;
return 0;
}출력 결과
First occurrence of character s in the string is at position 1
위 프로그램에서는 먼저 문자열 str을 정의합니다. 그다음 strchr() 함수를 호출하여 포인터 c가 문자열 내에서 문자 's'가 처음 나타나는 위치를 가리키도록 합니다. 마지막으로 cout을 사용해 's'의 위치를 화면에 출력합니다. 관련 코드는 다음과 같습니다.
char str[] = "strings"; char * c = strchr(str,'s'); cout << "First occurrence of character "<< *c <<" in the string is at position "<< c - str + 1;
여기서 c - str + 1은 포인터 연산을 통해 구한 인덱스에 1을 더해, 사람이 읽기 쉬운 1부터 시작하는 위치 값으로 계산한 것입니다.
예제 2: 특정 문자 이후의 문자열(접미사) 출력하기
strchr() 함수는 특정 문자가 처음 나타나는 위치 이후의 문자열 전체, 즉 접미사(suffix)를 출력하는 데에도 활용할 수 있습니다. 이를 보여주는 프로그램은 다음과 같습니다.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = "strings";
char * c = strchr(str,'i');
cout << "Remaining string after first occurance of "<< *c <<" is "<< c ;
return 0;
}출력 결과
Remaining string after first occurance of i is ings
위 프로그램 역시 먼저 문자열 str을 정의한 후, strchr() 함수를 통해 포인터 c가 문자 'i'가 처음 나타나는 위치를 가리키도록 합니다. 그런 다음 cout을 사용하여 c가 가리키는 위치부터 문자열 끝까지의 나머지 부분을 출력합니다. 관련 코드는 다음과 같습니다.
char str[] = "strings"; char * c = strchr(str,'i'); cout << "Remaining string after first occurance of "<< *c <<" is "<< c ;
마무리
strchr() 함수는 <cstring> 헤더에 선언되어 있으며, 문자열 검색 작업에서 매우 유용하게 활용됩니다. 문자의 위치 확인뿐만 아니라 특정 구분자(delimiter) 이후의 부분 문자열을 추출하는 용도로도 널리 사용되므로, C++ 문자열 처리의 기본 도구 중 하나로 익혀 두면 좋습니다.