C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのiswdigit()関数とは?使い方をわかりやすく解説

C++ STLにおけるiswdigit()関数は、指定されたワイド文字が10進数字(decimal digit)であるかどうかを判定するための組み込み関数です。この関数は、C/C++の <cwctype> ヘッダーファイル内に定義されています。

10進数字とは?

10進数字とは、0から始まる数値を表す文字のことで、具体的には「0、1、2、3、4、5、6、7、8、9」の10種類を指します。

iswdigit()関数の構文

int iswdigit(wint_t c);

パラメータ: c は判定対象となるワイド文字で、wint_t 型にキャストして渡すか、WEOF を指定します。wint_t は整数型です。

戻り値: c が10進数字である場合は0以外の値(真)を返し、そうでない場合は0(偽)を返します。

プログラムでの基本的な使い方

  • string型の変数(例:str[])に入力文字列を格納します

  • iswdigit()関数を呼び出し、対象のワイド文字が10進数字かどうかを判定します

  • 判定結果を出力します

サンプルコード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 << L" は数字です" << endl;
    else
        wcout << c_1 << L" は数字ではありません" << endl;
    if (iswdigit(c_2))
        wcout << c_2 << L" は数字です" << endl;
    else
        wcout << c_2 << L" は数字ではありません" << endl;
    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

2 は数字です
* は数字ではありません

サンプルコード2

次の例では、文字列の先頭文字が数字かどうかを確認してから、wcstol()関数を使って数値へ変換しています。

#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"The year that followed %ld was %ld.\n", year, year + 1);
    }
    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

The year that followed 1776 was 1777.

まとめ

iswdigit()関数を使うことで、ワイド文字が「0〜9」のいずれかの10進数字であるかどうかを簡単に判定できます。ユーザー入力のバリデーションや、文字列から数値部分を抽出する前のチェックなど、幅広い場面で活用できる便利な関数です。なお、類似の関数としてマルチバイト文字向けの isdigit() も存在するため、扱う文字の種類に応じて使い分けるとよいでしょう。

  1. C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説

    cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引

  2. C++ STLのsinh()関数の使い方を徹底解説

    sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin