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

【C++】入力値が整数か文字列かを判定するプログラムの書き方

ユーザーから入力された値が「整数」なのか「文字列」なのかを判定するのは、C++のプログラミングでよくある処理の一つです。本記事では、isdigit()関数を使って入力値を判定するシンプルな方法を解説します。

整数と文字列の定義

  • 整数:0〜9までの数字のみで構成された値(例:123、4567)
  • 文字列:0〜9以外の文字を含む値(例:Tutorials Point、sunidhi)

実行例

入力:123
出力:123 は整数です
入力:Tutorials Point
出力:Tutorials Point は文字列です

判定のアプローチ

以下の手順で入力値が整数かどうかをチェックします。

  • ユーザーからの入力データを受け取る。
  • isdigit()関数を適用し、各文字が数字かどうかを確認する。この関数は引数として1つの文字(int型)を受け取り、数字であれば0以外の値、そうでなければ0を返す。
  • 判定結果を出力する。

アルゴリズム

開始
ステップ1 → 数値・文字列判定用の関数を宣言する
    bool check_number(string str)
    ループ:int i = 0 から i < str.length() まで i++
        もし (isdigit(str[i]) == false) ならば
            return false
        終了
    終了
    return true
ステップ2 → main() 関数
    文字列 str = "sunidhi" を設定
        IF (check_number(str))
            「は整数です」と出力
        ELSE
            「は文字列です」と出力
        文字列 str1 = "1234" を設定
            IF (check_number(str1))
                「は整数です」と出力
            ELSE
                「は文字列です」と出力
終了

C++サンプルコード

#include <iostream>
#include <cctype>   // isdigit() を使うために必要
using namespace std;

// 数値か文字列かを判定する関数
bool check_number(string str) {
    for (int i = 0; i < str.length(); i++) {
        if (isdigit(str[i]) == false)
            return false;
    }
    return true;
}

int main() {
    string str = "sunidhi";
    if (check_number(str))
        cout << str << " は整数です" << endl;
    else
        cout << str << " は文字列です" << endl;

    string str1 = "1234";
    if (check_number(str1))
        cout << str1 << " は整数です";
    else
        cout << str1 << " は文字列です";

    return 0;
}

実行結果

sunidhi は文字列です
1234 は整数です

コードのポイント

  • isdigit()関数<cctype>ヘッダーに含まれる標準ライブラリ関数で、渡された文字が「0」〜「9」の数字であるかを判定します。数字の場合は0以外(真)を返します。
  • 全文字の走査:文字列内のすべての文字に対してisdigit()を適用し、1つでも数字以外の文字が見つかった時点でfalseを返すことで、その文字列が整数ではないと判断できます。
  • 注意点:負の数(マイナス記号を含む値)や小数点を含む数値は、この方法では「文字列」として判定されるため、必要に応じて符号や小数点の扱いを追加で考慮してください。

このように、isdigit()関数とループ処理を組み合わせるだけで、文字列が純粋な整数表現かどうかを簡単に判定できます。入力バリデーションなど、さまざまな場面で応用できる基本的なテクニックなので、ぜひ覚えておきましょう。

  1. C++で配列がビトニック配列かどうかを判定するプログラム

    N個の整数からなる配列 arr[N] が与えられたとき、その配列がビトニック配列であるかどうかを判定するのが本記事のテーマです。ビトニック配列であれば「Yes its a bitonic array」と出力し、そうでなければ「No its not a bitonic array」と出力します。ビトニック配列とは、まず厳密に増加し、その後厳密に減少するような配列のことです。たとえば arr[] = {1, 2, 3, 4, 2, -1, -5} という配列は、4までは厳密に増加しており、4以降は厳密に減少しているため、ビトニック配列といえます。入力例と出力例入力arr[] = {1, 3, 5,

  2. C++で対合行列(インボリュートリー行列)を判定するプログラムの実装方法

    行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表します。ここでは r = c、つまり正方行列である場合を考えます。この記事では、与えられた正方行列が対合行列(インボリュートリー行列)であるかどうかを判定する方法を解説します。 対合行列とは 対合行列とは、ある行列を自分自身と掛け合わせたとき、その積が単位行列になるような行列のことです。単位行列 I とは、主対角成分がすべて 1 で、それ以外の要素がすべて 0 である行列を指します。 したがって、行列 M が対合行列であるための必要十分条件は次のように表せます。 M × M = I ここで、M は任意の行列、I は単位行列で