我正在做一项作业,其中我们要从文件中读取公司数据,然后处理错误。
到目前为止,我认为第一行可以使用,但是我不确定如何使它在每一行读取。每行都是一个带有ID,名称和付款的记录。基本上,我想知道在处理完第一行后如何跳到下一行。我还没有包括错误检查,但我认为它将在读取1条记录后最后一次执行while循环。如果读入每个变量的信息有误,我可以对其进行检查并将其输出到摘要文件或错误文件中。
void processFile()
{
string filename;
ifstream recordFile;
ofstream summary("summary.dat");
ofstream error("error.dat");
cout << "Please enter a filename\n";
do
{
cin >> filename;
recordFile.open(filename);
if (!recordFile.is_open())
cout << "No file by that name. Please enter another filename\n";
}
while(!recordFile.is_open());
int ID = 0;
string firstName;
string lastName;
double payment1, payment2, payment3 = (0.00, 0.00, 0.00);
string numberOfRecords;
getline(recordFile, numberOfRecords);
do
{
ws(recordFile);
recordFile >> ID;
recordFile >> firstName;
recordFile >> lastName;
recordFile >> payment1;
recordFile >> payment2;
recordFile >> payment3;
}
while(!recordFile.eof());
}
* edit:我发现了问题的一部分,实际上我需要跳过第一行并从那一点继续读下去。每个文件的第一行中都包含无用的数据。
最佳答案
在getline
对象上使用ifstream
函数