我是初学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;
}
答案 0 :(得分:0)
确保您设置为从inFile
接收的数据类型与inFile
读取的类型相匹配。如果没有,您将收到一个流错误,这将导致您的程序停止读取。
每次阅读后,尝试inFile.clear()
并查看您的程序是否挂起或提前停止。或者,在每次阅读后尝试
if(inFile.fail())
{
cout << "Read error in file\n";
}
这可能不是答案,但我会在这里开始调试。
答案 1 :(得分:-1)
尝试将while语句更改为:
while(!inFile.eof())
并确保您已按正确顺序将数据存储在文件中。