用于读取整数向量的输入验证

时间:2018-04-21 17:42:13

标签: c++

我从用户那里读取了一个int的向量,我尝试进行一些输入验证,这样如果用户输入一个字母就会将其更改为0.这就是我所拥有的。

 for(int i=0; i < columns;i++)      
                {
                    int temp3;
                    cin >> temp3;
                    if (temp3 > 100 or temp3 < 0)
                        temp3 = 0;
                    if (isalpha(temp3))   //run-time error here 
                        temp3 = 0;

                    newstu.push_back(temp3);


                }

注释行是问题,但因为它是运行时错误。我不确定为什么这是错误的/不起作用。有任何想法吗?提前致谢

1 个答案:

答案 0 :(得分:0)

如果你有权访问boost,你也可以尝试使用try / catch设计。

你有一个例子:https://www.boost.org/doc/libs/1_55_0/doc/html/boost_lexical_cast/examples.html

try
{
   args.push_back(lexical_cast<int>(temp3));
}
catch(const bad_lexical_cast &)
{
  args.push_back(0);
}