C++ STL에서 iswdigit() 함수는 주어진 와이드 문자(wide character)가 십진수 숫자 문자인지 여부를 검사하는 데 사용되는 내장 함수입니다. 이 함수는 C/C++의 cwctype 헤더 파일에 정의되어 있으며, 별도의 구현 없이 바로 호출하여 사용할 수 있습니다.
십진수 숫자 문자란?
십진수 숫자 문자란 0부터 시작하는 수치 값을 의미하며, 구체적으로 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 열 개의 문자에 해당합니다. iswdigit() 함수는 전달된 와이드 문자가 이 범위에 속하는지를 판별합니다.
iswdigit() 함수의 문법
int iswdigit(wint_t c)
매개변수 − c는 검사 대상이 되는 와이드 문자로, 정수형인 wint_t 타입으로 캐스팅되어 전달되거나 WEOF 값일 수 있습니다.
반환값 − c가 실제로 십진수 숫자라면 0이 아닌 값(true)을 반환하고, 그렇지 않은 경우에는 0(false)을 반환합니다.
예제 프로그램의 접근 방식
string 타입의 변수(예: str[])에 문자열을 입력받습니다.
iswdigit() 함수를 호출하여 주어진 와이드 문자가 십진수 숫자인지 확인합니다.
검사 결과를 화면에 출력합니다.
예제 1
#include <cwctype>
#include <iostream>
using namespace std;
int main(){
wchar_t c_1 = '2';
wchar_t c_2 = '*';
// 문자가 숫자인지 확인하는 함수
if (iswdigit(c_1))
wcout << c_1 << " 는 숫자입니다";
else
wcout << c_1 << " 는 숫자가 아닙니다";
wcout << endl;
if (iswdigit(c_2))
wcout << c_2 << " 는 숫자입니다";
else
wcout << c_2 << " 는 숫자가 아닙니다";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
2 는 숫자입니다
* 는 숫자가 아닙니다
숫자 '2'는 십진수 숫자에 해당하므로 true를 반환하고, 특수문자 '*'는 해당하지 않으므로 false를 반환하는 것을 확인할 수 있습니다.
예제 2
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main (){
wchar_t str[] = L"1776ad";
long int year;
if (iswdigit(str[0])) {
year = wcstol (str,NULL,10);
wprintf (L"%ld년 다음 해는 %ld년입니다.\n",year,year+1);
}
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
1776년 다음 해는 1777년입니다.
이 예제에서는 문자열의 첫 번째 문자가 숫자인지 iswdigit()으로 먼저 검사한 뒤, 숫자임이 확인되면 wcstol() 함수를 사용해 문자열을 정수로 변환하여 활용하는 실용적인 패턴을 보여줍니다. 이처럼 iswdigit()은 입력값 검증 단계에서 유용하게 사용될 수 있습니다.