检查字符串中任何数字的最简单方法

时间:2015-06-22 19:58:55

标签: c++ visual-c++

如果找到数字返回错误,那么检查输入字符串中任何数字的最简单,最简单的初学者友好方法是什么。

5 个答案:

答案 0 :(得分:2)

有一个名为isdigit的函数,用于检查其输入是否为十进制数字。希望这会有所帮助。

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main() {
        string s = "abc1abc";
        for(int i = 0; i < s.length(); i++) {
                if(isdigit(s[i])) {
                        cout << "Found numer at pos: " << i << endl;
                        return -1;
                }
        }
        return(0);
}

答案 1 :(得分:1)

最简单的方法是逐个字符地检查整个字符串,看看它是不是一个字符串。

std::string yourString;

for(int i=0;i<yourString.size();i++)
{
    if(yourString[i]<='9' && yourString[i]>='0')
    {
         std::cout << "Err" << std::endl;
         break;
    }
}

另一种解决方案是使用正则表达式。检查数字是否存在的正则表达式是\ d

答案 2 :(得分:0)

您可以使用string::find。只需查找1,2,3,4,5,6,7,8,9或0,如果发现一个返回错误。

答案 3 :(得分:0)

您可以使用std::find_ifstd::isdigit来检查字符串是否包含数字。

#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>

bool hasNumber(std::string const& s)
{
   return (std::find_if(s.begin(), s.end(), [](char c) { return std::isdigit(c); }) != s.end());
}

int main(int argc, char** argv)
{
   for ( int i = 1; i < argc; ++i )
   {
      if ( hasNumber(argv[i]) )
      {
         std::cout << "'" << argv[i] << "' contains a number.\n";
      }
      else
      {
         std::cout << "'" << argv[i] << "' does not contain a number.\n";
      }
   }

   return 0;
}

运行时:

./prog abcd12 12akdk akdk1dkdk akske

输出结果为:

'abcd12' contains a number.
'12akdk' contains a number.
'akdk1dkdk' contains a number.
'akske' does not contain a number.

答案 4 :(得分:0)

最简单:

boost::algorithm::any(str, std::isdigit)

如果你没有与boost联系:

std::any_of(str.begin(), str.end(), std::isdigit)