【发布时间】:2016-09-14 08:09:11
【问题描述】:
我正在用 C++ 创建一个加密/解密程序,并使用三个用户提供的数字来自定义加密。我在 cplusplus.com 上阅读了有关 isdigit() 的信息,并基于此制作了一个函数:
bool is_numeric(char *string)
{
int sizeOfString = sizeof(string);
int iteration = 0;
bool isNumeric = true;
while(iteration < sizeOfString)
{
if(!isdigit(string[iteration]))
{
isNumeric = false;
break;
}
iteration++;
}
return isNumeric;
}
但是,它似乎不起作用。无论我给它一个数字还是一个非数字字符,它仍然返回 false。我的方法有什么问题。
【问题讨论】:
-
把你的字符串叫做string有点危险。如果你使用标准,那么你可能会遇到一些问题,特别是如果你使用命名空间标准。
-
我不使用
use namespace std。我总是使用std::whatever,这似乎是正确的做事方式。 -
sizeof 返回调用它的类型的编译时大小。字符串变量的类型为
char *,因此您将获得char *变量的大小。请注意,对于 C 数组,数组的类型也是它的大小。例如。int foo[100]的类型是 100 个整数的数组。请注意,在许多情况下,这些数组会默默地衰减为指针。 ideone.com/gYqUiY 可能有用。 -
您也可以使用strspn 并检查其返回值是否为
strlen(string)。这会将您的函数折叠成一行,此外,您可以在需要时添加其他字符。
标签: c++ command-line-arguments numeric