wcspbrk() 함수는 C 및 C++의 표준 라이브러리에 내장된 함수로, 하나의 와이드 문자열(wide string) 안에서 다른 와이드 문자열에 포함된 문자 집합을 검색하는 데 사용됩니다. 이 함수는 <cwchar> 헤더 파일에 선언되어 있습니다.
wcspbrk() 함수의 매개변수
이 함수는 두 개의 인수를 받습니다.
- dest (첫 번째 인수): 검색 대상이 되는 널 종료(null-terminated) 와이드 문자열입니다.
- src (두 번째 인수): 검색할 문자들을 담고 있는 널 종료 와이드 문자열입니다.
반환값
wcspbrk() 함수는 다음과 같은 값을 반환합니다.
- 일치하는 문자가 있는 경우: dest 문자열에서 src에 포함된 문자 중 처음으로 일치하는 문자의 포인터를 반환합니다. 이 포인터를 통해 해당 문자의 위치를 알 수 있습니다.
- 일치하는 문자가 없는 경우: 널 포인터(NULL)를 반환합니다.
사용 예제
다음 예제는 wcspbrk() 함수를 활용하여 문자열 속의 모든 모음(vowel)을 찾아 출력하는 프로그램입니다.
#include <cwchar>
#include <iostream>
using namespace std;
int main () {
wchar_t wcs[] = L"Hello World. This is C++ PROGRAM.";
wchar_t key[] = L"aeiouAEIOU";
wchar_t * pwc;
wcout << L"Vowels in '" << wcs << "': ";
pwc = wcspbrk (wcs, key);
while (pwc != NULL) {
wcout << *pwc << L" ";
pwc = wcspbrk (pwc+1, key);
}
wcout << L"\n";
}
실행 결과
Vowels in 'Hello World. This is C++ PROGRAM.': e o o i i O A
코드 설명
위 예제에서 wcs는 검색 대상 문자열이고, key는 찾고자 하는 모음 문자들의 집합입니다. wcspbrk(wcs, key)를 호출하면 문자열에서 모음이 처음 등장하는 위치('e')의 포인터가 반환됩니다.
이후 while 루프에서는 반환된 포인터에 1을 더한 위치(pwc+1)부터 다시 검색을 수행하여, 문자열 끝까지 모든 모음을 순차적으로 찾아냅니다. 더 이상 일치하는 문자가 없으면 NULL이 반환되어 루프가 종료됩니다.
이처럼 wcspbrk()는 와이드 문자열 처리 시 특정 문자 집합의 존재 여부 확인이나 위치 탐색에 유용하게 활용될 수 있습니다.