检查输入是整数还是大于零

时间:2016-10-16 03:01:27

标签: c++

所以我有点挣扎 - 我怎样才能检查用户输入是否为整数? 我确实尝试过/同时...但不知何故它不起作用。

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;
}

提前致谢!

3 个答案:

答案 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,单字或整行),然后处理它。