如何使用 C 识别字符串中的数字
编写一个能够验证字符串是否表示 C 中的数值的函数一个重大的挑战。本文解决了这个问题并提出了一个有效的解决方案。
原始尝试
最初,开发了一个名为 isParam 的函数,目的是确定文本中的一行是否存在文件构成了一个数值。该函数利用了 isdigit 和 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(); }
限制和增强
值得注意的是,所提供的解决方案仅验证正整数。对于涉及负整数或小数值的场景,建议使用更全面的基于库的方法。扩展代码以处理负整数相对简单,但实现小数验证需要更强大的方法。
以上是如何在 C 语言中有效地识别字符串中的数值?的详细内容。更多信息请关注PHP中文网其他相关文章!