ホームページ > バックエンド開発 > C++ > C で文字列内の数値を効率的に識別するにはどうすればよいですか?

C で文字列内の数値を効率的に識別するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-18 02:08:10
オリジナル
785 人が閲覧しました

How Can I Efficiently Identify Numeric Values Within a String in C  ?

C を使用して文字列内の数値を識別する方法

C で文字列が数値を表すかどうかを検証できる関数をコーディングする重要な課題です。この記事では、この問題に対処し、効率的な解決策を紹介します。

オリジナルの試み

当初、isParam という名前の関数は、テキスト内の行かどうかを確認する目的で開発されました。ファイルは数値で構成されていました。この関数では isdigital 関数と atoi 関数が使用されていますが、予期しないエラーが発生しました。

代替アプローチ

元の関数の代わりに、別の方法をお勧めします。このアプローチには、数値以外の文字が見つかるまで文字列を走査することが含まれます。このような文字が識別された場合、その文字列は数値ではないとみなされます。コードは次のとおりです:

bool is_number(const std::string& s)
{
    std::string::const_iterator it = s.begin();
    while (it != s.end() && std::isdigit(*it)) ++it;
    return !s.empty() && it == s.end();
}
ログイン後にコピー

代わりに、C 11 構文を利用して同じ結果を達成することもできます:

bool is_number(const std::string& s)
{
    return !s.empty() && std::find_if(s.begin(), 
        s.end(), [](unsigned char c) { return !std::isdigit(c); }) == s.end();
}
ログイン後にコピー

制限事項と拡張機能

提供されたソリューションは正の整数のみを検証することに注意してください。負の整数または 10 進数値が含まれるシナリオの場合は、より包括的なライブラリベースの方法をお勧めします。負の整数を処理するようにコードを拡張するのは比較的簡単ですが、10 進数の検証を実装するには、より堅牢なアプローチが必要です。

以上がC で文字列内の数値を効率的に識別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート