所以我有点挣扎 - 我怎样才能检查用户输入是否为整数? 我确实尝试过/同时...但不知何故它不起作用。
void pievieno(int *a ,int jaunais,int vecais){
int jaunais_skaitlis;
cout<< "Ievadiet skaitlus" <<endl;
for (int i=vecais;i<jaunais;i++)
{
cin >> jaunais_skaitlis;
a[i] = jaunais_skaitlis;
}
提前致谢!
答案 0 :(得分:1)
嗯,检查用户输入的数据类型没有意义,因为您已经使用int jaunais_skaitlis;
故意将输入变量定义为整数。因此,无论用户输入什么内容,您都可以获得输入的整数值。
但是,您可以做的是将数据类型定义为integer
之外的其他内容,可能是float
,然后检查它是否为整数,浮点数或其他内容。
答案 1 :(得分:1)
您应该接受用户输入的字符串,并检查其中的内容。 有很多方法可以检查用户的输入。最强大的方法是正则表达式。
答案 2 :(得分:0)
当您致电stream >> variable
时,根据variable
的类型,stream
会尝试处理字符以获取某些内容,这对此类变量类型有效。如果没有设置stream
s failbit
,那么您可以检查它。
for (int i=vecais;i<jaunais;i++)
{
cin >> jaunais_skaitlis;
if (cin.fail())
{
// abort, user inputed something, which is not integer.
}
a[i] = jaunais_skaitlis;
}
请注意,stream
将尽可能多地从输入中提取内容。因此,如果您输入123qffe541e
,它实际上是有效输入,jaunais_skaitlis
将包含123
,其余字符将保留在流中(因此,下一次迭代失败)。
如果你真的想检查整个输入是否为整数,你必须阅读更多的字符(例如,根据你的需要读取std::string
,单字或整行),然后处理它。