C++/CLI数値かどうかをチェックする (IsNumeric)

スポンサーリンク

ある式が数値かどうか判断するようなエラーチェックが必要になる場合があります。VB で言えば IsNumeric 関数のようなメソッドです。

Microsoft.VisualBasic 名前空間配下に IsNumeric メソッドは存在するものの、この名前空間を使いたくないという理由から自作のメソッドを作ることが多いようです。

.NET Framework 的には System.Double 構造体の TryParse メソッドを使うことになります。TryParse メソッドは、何を数値として見なすか、System.Globalization.NumberStyles の引数で細かく設定することが可能です。今回は、VB の IsNumeric とほぼ同じ動きをさせることを考えたメソッドを紹介します。

サンプルコード

以下にサンプルコードを示します。

C++/CLI 全般
public ref class Validation sealed {

    public:
        static bool IsNumeric(System::String^ stTarget) {
            double dNullable;

            return System::Double::TryParse(
                stTarget,
                System::Globalization::NumberStyles::Any,
                nullptr,
                dNullable
            );
        };

        static bool IsNumeric(System::Object^ oTarget) {
            return IsNumeric(oTarget->ToString());
        };

};

使用例は以下のようになります。

C++/CLI 全般
    // 文字列が数値かどうかをチェックする
    if (Validation::IsNumeric("-123,456")) {
        MessageBox::Show("数値です");
    }

関連するリファレンス

準備中です。

スポンサーリンク