【发布时间】:2014-04-12 10:46:53
【问题描述】:
我正在查看 istream 类,但没有看到完全清理缓冲区并将输入设置为下一个“清理”输入的方法。
我为我的类定义了提取运算符,并在我的主程序中要求用户输入,如下所示:
while (true) {
try {
cout << "Enter input: ";
MyClass c;
cin >> c;
return c;
} catch(const MyException& e) {
cerr << "Error\n";
}
}
如果我输入了意外的错误输入,我将陷入无限循环。
在我重写的提取方法中,我控制输入不正确并引发异常的时间,这一切都可以。我只想清理istream 对象,以防止无限循环。
【问题讨论】:
-
我真的不喜欢无限循环的设计,但可能与重置流有关:stackoverflow.com/q/257091/1938163
标签: c++ operators operator-overloading istream