我正在做一项作业,其中我们要从文件中读取公司数据,然后处理错误。

到目前为止,我认为第一行可以使用,但是我不确定如何使它在每一行读取。每行都是一个带有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函数

09-25 18:30