我想知道为什么我的文件阅读提前停止

时间:2014-04-23 20:40:56

标签: c++ file-io iostream

我是初学C ++用户,我尝试过与同学合作,但我们还没有找到这个问题的答案。我们的讲师为我们提供了一个为我们运行主要功能的链接器,并提供了一个简单的文本文件供我们阅读,目前标题中的第二个const char *是不重要的,现在我需要的只是从文件const char * saifFile中读取数据并在屏幕上显示。当我运行我的程序时,我发现它会提前停止阅读。我理解您可能无法提供帮助,因为您无法访问链接器,但我们非常感谢您提供帮助。

这是我的所有代码:

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

const int DESC_SIZE = 37;

struct Item
{
int itemId;
char description[DESC_SIZE];
double cost, price;
};

int processFile(const char* saifFile, const char* raofFile)
{
fstream outFile, inFile;
Item Inventory;

inFile.open(saifFile, ios::in);
while (inFile)
    {
        inFile >> Inventory.itemId >> Inventory.cost >> Inventory.price;
        inFile.getline(Inventory.description, DESC_SIZE);
        cout << "      " << Inventory.itemId << "     " << setw(5) << Inventory.cost << "       " << setw(5) << Inventory.price <<" " << Inventory.description << endl;
    }

return 0;
}

2 个答案:

答案 0 :(得分:0)

确保您设置为从inFile接收的数据类型与inFile读取的类型相匹配。如果没有,您将收到一个流错误,这将导致您的程序停止读取。

每次阅读后,尝试inFile.clear()并查看您的程序是否挂起或提前停止。或者,在每次阅读后尝试

if(inFile.fail())
{
    cout << "Read error in file\n";
}

这可能不是答案,但我会在这里开始调试。

答案 1 :(得分:-1)

尝试将while语句更改为:

while(!inFile.eof())

并确保您已按正确顺序将数据存储在文件中。