文件结束后继续输入

时间:2013-11-05 18:09:21

标签: c++

有没有办法可以在文件结束或无效输入后继续输入。如果未记录某个数据成员,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);
    }
}

1 个答案:

答案 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;
}