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

C++ STL의 iswdigit() 함수 – 와이드 문자가 십진수 숫자인지 확인하는 방법


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()은 입력값 검증 단계에서 유용하게 사용될 수 있습니다.