【发布时间】:2017-10-10 13:42:54
【问题描述】:
不要讨厌 Turbo,我已经讨厌我的学校了!
如果在某些文件(例如年龄或百分比)中输入字符而不是 int 或 float,我希望显示错误消息。 我写了这个函数:
template <class Type>
Type modcin(Type var) {
take_input: //Label
int count = 0;
cin>>var;
if(!cin){
cin.clear();
cin.ignore();
for ( ; count < 1; count++) { //Printed only once
cout<<"\n Invalid input! Try again: ";
}
goto take_input;
}
return var;
}
如何阻止错误消息重复多次? 有没有更好的方法?
注意:请确保这是我们正在谈论的 TurboC++,我尝试使用此 question 中的方法,但即使在包含 limits.h 之后,它不起作用。
【问题讨论】:
-
这是 goto 使用不当的例子。不要用 goto 构造循环。使用实际的循环。
-
@hyde 我明白,我在尝试 for 和 do-while 循环后使用了 goto,我尝试了不同的方法来消除多个打印。我发布了 goto 代码,因为这是我最后一次尝试。
-
@AnkurSingh 你每次都去,所以这是一个无限循环......添加
if,所以只有当你输入错误时才会执行goto......但for会是更好的代码可能少得多... -
@Spektre 我明白这一点,但我已经尝试使用 for 和 while。有一段时间了,但在控制台中输入字符串时,我无法摆脱多次打印。我什至试着把 cin>>var;退出循环并在 while 循环中检查它的状态,但由于某些原因,这也给了我多个输出。
-
@AlphaMineron 你也在用 TurboC++ 吗?