C++程序检查字符串是否为数字


在处理逻辑编程难题时,使用字符串或字符可能非常有用。字符串中的字符是1字节数据类型,可以存储来自ASCII值的符号。字符串是字符的集合。这些符号可以是特殊字符、数字系统中的数字或英文字母表中的字母。本文将教你如何使用C++来确定字符是否为数字字符。

检查字符串是否为数字

要检查给定的字符串是否为数字,我们需要检查其中的每个字符是否为数字。如果其中任何一个是非数字字符,则该字符串为非数字,否则为数字。算法将如下所示:

算法

  • 读取输入字符串s
  • 对于字符串s中的每个字符c,执行以下操作:
    • 如果c是非数字,则
      • 返回false
    • 结束if
  • 结束for
  • 返回true

示例

#include <iostream> #include <ctype.h> using namespace std; string solve( string s ) { for( int i = 0; i < s.length(); i++ ) { if( !isdigit( s[i] )) { return "False"; } } return "True"; } int main() { cout << "Is "589" a numeric string? : " << solve( "589" ) << endl; cout << "Is "69a" a numeric string? : " << solve( "69a" ) << endl; cout << "Is "2979624" a numeric string? : " << solve( "2979624" ) << endl; cout << "Is "25\%4A" a numeric string? : " << solve( "25\%4A" ) << endl; cout << "Is "889" a numeric string? : " << solve( "889" ) << endl; }

输出

Is "589" a numeric string? : True
Is "69a" a numeric string? : False
Is "2979624" a numeric string? : True
Is "25%4A" a numeric string? : False
Is "889" a numeric string? : True

此解决方案可以检查给定的字符串是否为数字,但当输入为负数时,它不会返回true。对于负数,需要进行特殊检查。

检查字符串是否为带负号或正号的数字

检查给定的字符串是否为数字,我们只需检查每个字符是否为数字即可。但是对于负数,第一个字符必须是“-”号。因此,检查第一个字符是否为负数,然后下一个字符是否为数字,如果是,则检查其余字符是否为数字。算法将如下所示:

算法

  • 读取输入字符串s
  • 如果s的第一个字符是“-”并且下一个字符是数字,则
    • st = 1
  • 否则
    • st = 0
  • 结束if
  • 对于从索引st开始的字符串s中的每个字符c,执行以下操作:
    • 如果c是非数字,则
      • 返回false
    • 结束if
  • 结束for
  • 返回true

示例

#include <iostream> #include <ctype.h> using namespace std; string solve( string s ) { int start; if( s[0] == '-' && isdigit( s[1] ) ) { start = 1; } else { start = 0; } for( int i = start; i < s.length(); i++ ) { if( !isdigit( s[i] )) { return "False"; } } return "True"; } int main() { cout << "Is "687" a numeric string? : " << solve( "687" ) << endl; cout << "Is "256l" a numeric string? : " << solve( "256l" ) << endl; cout << "Is "-5845" a numeric string? : " << solve( "-5845" ) << endl; cout << "Is "-89A2" a numeric string? : " << solve( "-89A2" ) << endl; cout << "Is "-256" a numeric string? : " << solve( "-256" ) << endl; }

输出

Is "687" a numeric string? : True
Is "256l" a numeric string? : False
Is "-5845" a numeric string? : True
Is "-89A2" a numeric string? : False
Is "-256" a numeric string? : True

结论

要检查给定的字符串是否为数字,我们需要检查其每个字符。当所有字符都是数字时,该字符串就是数字。在本文中,我们还使用了逻辑来检查负数。当第一个字符是负号时,检查下一个字符是否为数字。如果是,则检查其余部分。此程序可以扩展到检查浮点数。现在它仅适用于正整数和负整数。

更新于: 2022年10月19日

11K+ 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告