【发布时间】:2020-10-17 17:07:12
【问题描述】:
我正在尝试创建一个程序来检查输入是 int 还是 string。
这是代码:
// CPP program to check if a given string
// is a valid integer
#include <iostream>
using namespace std;
// Returns true if s is a number else false
bool isNumber(string s)
{
for (int i = 0; i < s.length(); i++)
if (isdigit(s[i]) == false)
return false;
return true;
}
// Driver code
int main()
{
// Saving the input in a string
string str = "6790";
// Function returns 1 if all elements
// are in range '0-9'
if (isNumber(str))
cout << "Integer";
// Function returns 0 if the input is
// not an integer
else
cout << "String";
}
我想问一下 i++ 还是 ++i 更适合这个循环,为什么?
for (int i = 0; i < s.length(); i++)
if (isdigit(s[i]) == false)
return false;
谢谢!
【问题讨论】:
-
输入总是一个字符串。问题是该字符串中的 text 是否可以converted 为整数。不要忽视这种区别。如果你这样做,迟早你会被咬得很厉害。
-
另外,在测试 C 风格分类函数的返回值时要非常小心(本例中为
isdigit)。他们返回一个整数; 0 表示测试失败,非零表示测试成功。if (isdigit(s[i] == false)会起作用,因为false会转换为 0。但如果你需要另辟蹊径,if (isdigit(s[i] == true)不一定会起作用。true转换为 1,但函数不需要返回 1,通常会返回一些其他值。为了可靠地检查这一点,让编译器完成工作:if (!isdigit(s[i]))和if (isdigit(s[i]))将可靠地工作。
标签: c++ string function for-loop integer