-3

是否可以检查字符串变量是否完全是数字?我知道您可以遍历字母表来检查非数字字符,但是还有其他方法吗?

4

3 回答 3

1
#include <iostream>
#include <string>
#include <locale>
#include <algorithm>

bool is_numeric(std::string str, std::locale loc = std::locale())
{
    return std::all_of(str.begin(), str.end(), std::isdigit);
}

int main()
{
    std::string str;
    std::cin >> str;

    std::cout << std::boolalpha << is_numeric(str); // true
}
于 2013-10-07T01:22:11.170 回答
1

我能想到的最快方法是尝试使用“strtol”或类似函数对其进行转换,看看它是否可以转换整个字符串:

char* numberString = "100";
char* endptr;
long number = strtol(numberString, &endptr, 10);
if (*endptr) {
    // Cast failed
} else {
    // Cast succeeded
}

该主题还讨论了此主题:如何使用 C++ 确定字符串是否为数字?

希望这可以帮助 :)

于 2013-10-07T01:03:34.430 回答
0

您可以使用ctype库中的isdigit函数:

  #include <stdio.h>
  #include <stdlib.h>
  #include <ctype.h>
  int main ()
  {
    char mystr[]="56203";
    int the_number;
    if (isdigit(mystr[0]))
    {
      the_number = atoi (mystr);
      printf ("The following is an integer\n",the_number);
    }
   return 0;
  }

此示例仅检查第一个字符。如果你想检查整个字符串,那么你可以使用一个循环,或者如果它的长度是固定的并且很小,只需将isdigit()与 && 结合起来。

于 2013-10-07T01:02:19.443 回答