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 サイトの他の関連記事を参照してください。