1

有什么方法可以在文件结束或无效输入后继续输入。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);
    }
}
4

1 回答 1

0

我认为某些输入操作失败person.record(std::cin);并且cin处于错误状态。在这种情况下,“如何刷新 cin 缓冲区? ”应该会有所帮助。特别是,请注意对错误输入的调用!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;
}
于 2013-11-05T18:51:46.327 回答