是否可以检查字符串变量是否完全是数字?我知道您可以遍历字母表来检查非数字字符,但是还有其他方法吗?
问问题
140 次
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 回答