C++ STL의 iswalpha() 함수란?
C++ STL에서 제공하는 iswalpha() 함수는 주어진 와이드 문자(wide character)가 알파벳 문자인지 여부를 판별하는 데 사용됩니다. 이 함수는 <cwctype> 헤더 파일에 정의되어 있으며, 문자가 알파벳이면 0이 아닌 값(true)을 반환하고, 알파벳이 아니면 0(false)을 반환합니다.
동작 원리 (알고리즘)
시작
문자열을 초기화합니다.
iswalpha(str) 함수를 호출하여 문자열에 알파벳이 포함되어 있는지 확인합니다.
알파벳이 포함되어 있으면 0이 아닌 값이 반환되고, 포함되어 있지 않으면 0이 반환됩니다.
종료
예제 코드
#include <cwctype>
#include <iostream>
#include <cwchar>
#include <clocale>
using namespace std;
int main() {
setlocale(LC_ALL, "ab1234");
wchar_t s[] = L"a%$^^&)";
bool flag = 0;
for (int i=0; i<wcslen(s); i++) {
if (iswalpha(s[i])) {
flag = 1;
break;
}
}
if (flag)
wcout << s << L" contains alphabets";
else
wcout << s << L" doesn't contain alphabets";
return 0;
}
코드 설명
위 예제 코드의 동작 과정을 단계별로 살펴보겠습니다.
setlocale()함수를 호출하여 프로그램의 로케일(locale)을 설정합니다.- 와이드 문자열
s를 "a%$^^&)"로 초기화합니다. for루프를 사용해 문자열의 각 문자를 순회하면서iswalpha()함수로 알파벳 여부를 검사합니다.- 알파벳 문자를 발견하면
flag를 1로 설정하고break로 루프를 종료합니다. - 마지막으로
flag값에 따라 해당 문자열에 알파벳이 포함되어 있는지 여부를 출력합니다.
출력 결과
a%$^^&) contains alphabets
정리
iswalpha() 함수는 와이드 문자가 알파벳인지 확인할 때 유용하게 활용됩니다. 일반 isalpha() 함수가 단일 바이트 문자를 처리하는 것과 달리, iswalpha()는 유니코드를 포함한 다양한 문자 집합을 지원하는 와이드 문자를 처리할 수 있다는 점이 가장 큰 차이점입니다. 따라서 다국어 환경이나 확장된 문자 집합을 다루는 프로그램에서 iswalpha()를 사용하는 것이 좋습니다.