从文件中读取。 C ++

时间:2013-04-18 02:31:20

标签: c++

因此,当我的程序启动时,它会尝试从文件中读取产品列表。但如果该文件不存在,则会显示错误并继续。我遇到的问题是当它显示错误时,它不会继续执行do while循环

ifstream input;
    input.open("data.txt");


    if (input.fail())
    {
        cout << "\n Data file not found \n";
    }
    ListItemType data; 

    input >> data.productname;
    while(( !input.eof()))
    {
        input >> data.category;
        input >> data.productprice;
        addproduct(head, data); 
        input >> data.productname;
    }

    input.close();

1 个答案:

答案 0 :(得分:1)

这不是相同的功能,但通常更好地转向:

if (std::ifstream input("data.txt"))
{
    ListItemType data; 
    while (input >> data.productname >> data.category >> data.productprice >> data.productname)
        addproduct(head, data);
    if (!input.eof())
        std::cerr << "Error parsing input file.\n";
}    
else
    cout << "\n Data file not found \n";

如果你按照上面的方式构造你的if / else子句,无论发生什么,它都会继续你想要的下面的代码。

请注意,上面的代码会在每次输入操作后检查问题。即使读取data.category失败,您的代码也会尝试读取data.productprice。你有两次读取productname有点奇怪,我假设你可以在I / O之后调用addproduct - 如果不是你需要一个while循环,如:

    while (input >> data.productname >> data.category >> data.productprice)
    {
        addproduct(head, data);
        if (!(input >> data.productname))
            break;
    }