ホームページ > バックエンド開発 > C++ > C 文字列が数値を表しているかどうかを効率的に確認するにはどうすればよいですか?

C 文字列が数値を表しているかどうかを効率的に確認するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-17 09:20:25
オリジナル
167 人が閲覧しました

How Can I Efficiently Check if a C   String Represents a Number?

C で文字列が数値を表しているかどうかを判断する方法

文字列が数値を構成しているかどうかの解読は、プログラミング、特にファイル解析またはデータ検証を含むシナリオ。この質問では、C で数値文字列を識別するためのアプローチを検討します。

元の関数 isParam は、atoi と isdigital を利用して文字列が数値かどうかを判断しようとしました。 atoi は文字列を整数に変換しようとしますが、文字列内の非数値文字の検出には信頼性がありません。

効率的な反復アプローチ

より効率的な方法には、次のようなものがあります。数値以外の文字が見つかるまで、文字列を 1 文字ずつ走査します。数値以外の文字が見つからないまま反復が終了した場合、その文字列は数値とみなされます。更新された関数は次のとおりです:

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 ラムダ アプローチ

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();
}
ログイン後にコピー

注: これらのソリューションはポジティブのみを処理します整数。負の整数と分数の場合は、より包括的なライブラリベースのアプローチの使用を検討してください。

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

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