【发布时间】:2016-09-28 00:05:14
【问题描述】:
bool isInt(string input) { //checks if string input is an int
if (input[0] == '-') { //checks if negative number
for (int a = 1; a < input.length(); a++) {
if (isdigit(input[a])) {
return true;
}
else {
return false;
}
}
}
for (int b = 0; b < input.length(); b++) {
if (isdigit(input[b])) {
return true;
} else {
return false;
}
}
}
所以我这里的代码是检查用户输入的字符串,看看它是否是一个整数。它可以工作,除非第一个字符是 - 或数字,但如果后面跟着 -23ab 或 -4b 等字符,我的程序不会将其视为错误,因为它不是有效数字。我知道错误是由于我的 return true/false 语句造成的,但我不知道如何解决它。
有什么想法吗?
【问题讨论】:
-
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行逐行检查您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题,以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。
-
如果你想将一个字符串转换为一个整数,那么
char* pStr = "-h4dfg"; int a = atoi(pStr); cout << a;atoi() 如果有一个字母在数字的最左边,则返回 0 -
std::strtol 会更有用,@Raindrop7。它会告诉你它停止转换的字符是什么,如果那个字符不是空的,它就停止得太快了。不过,不确定溢出情况。我认为这很愚蠢,并且在溢出整数但不是 100% 确定之后继续。
-
您的循环永远无法遍历整个字符串,因为它们包含
if this { return } else { return }。它们决定返回什么值,并在查看一个字符后采取该操作!