有没有办法可以在文件结束或无效输入后继续输入。如果未记录某个数据成员,record
函数将抛出异常。我想捕获异常并使用另一个函数rerecord
来输入信息。该程序将捕获异常并打印输出,但它不会执行最后一部分。
int main()
{
info person;
try {
person.record(std::cin);
}
catch(std::domain_error e) {
std::cout << "Re-enter person info" << std::endl;
person.rerecord(std::cin);
}
}
答案 0 :(得分:0)
我认为person.record(std::cin);
中的某些输入操作失败,cin
处于错误状态。
在这种情况下
“How do I flush the cin buffer?”应该有所帮助。
特别是,请注意致电ignore(...)
以获取错误输入!
运行演示代码:
#include <iostream>
#include <limits>
int main() {
int i;
std::cout << "Input: ";
std::cin >> i;
std::cout << "Received: " << i << "\nInput next:";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin >> i;
std::cout << "Received: " << i << "\n";
return 0;
}