我从用户那里读取了一个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);
}
注释行是问题,但因为它是运行时错误。我不确定为什么这是错误的/不起作用。有任何想法吗?提前致谢
答案 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);
}